栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybaits动态代理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybaits动态代理

为什么使用动态代理:因为三层架构,界面层调用业务逻辑层的接口,要调用接口下的实现类。实现类为.xml文件,无法调用,使用动态代理可以解决

前提:将前面的Mybatis的配置配好

可以定义代码片断,可以进行逻辑判断,可以进行循环处理(批量处理),使条件判断更为简单.
  1):用来定义代码片断,可以将所有的列名,或复杂的条件定义为代码片断,供使用时调用.
  2):用来引用定义的代码片断.

 
    
        id,
        username,
        birthday,
        sex,
        address
    
  //引用定义好的代码片断
   
        select 
        from users
    

可以对以前的代码进行优化

3)字段替代

接口里增加

//模糊用户名和地址查询
    List getByNameOrAddress(
            @Param("columnName") String columnName,
            @Param("columnValue") String columnValue);

UserMapper里增加


        select
        
        
        from users
        
            
                and username like concat('%', #{userName}, '%')
            
            
                and birthday = #{birthday}
            
            
                and sex = #{sex}
            
            
                and address like concat('%', #{address}, '%')
            
        
    

 测试类

 @Test
    public void testGetByCondition(){
        Users users = new Users();
//        users.setSex("1");
//        users.setUserName("小");
//        users.setAddress("南");
        List list=mapper.getByCondition(users);
        list.forEach(useruser -> System.out.println(useruser));
        for (Users users1 : list) {
            System.out.println(users1);
        }
    }

5):有选择的进行更新处理,至少更新一列.能够保证如果没有传值进来,则数据库中的数据保持不变

接口里增加 

    //有选择的更新
    int updateBySet(Users users);

UserMapper里增加

  
        update users
        
            
                username=#{userName},
            
            
                birthday=#{birthday},
            
            
                sex=#{sex},
            
            
                address=#{address}
            
        
        where id = #{id}
    

 测试类

  @Test
    public void testUpdateSet(){
        Users users = new Users();
        users.setId(6);
        users.setUserName("lla");
        int update = mapper.updateBySet(users);
        System.out.println(update);
        sqlSession.commit();
    }

 6):用来进行循环遍历,完成循环条件查询,批量删除,批量增加,批量更新.

接口里增加 

 //查询多个指定id的用户信息
    List getByIds(Integer []arr);

UserMapper里增加