NO.09 MyBatis中逆向工程生成的Mapper接口中的方法功能说明以及使用

目录

1、前言

2、Mapper接口中的方法以及方法说明

2.1 MinisterMapper接口方法列表

 2.2 方法说明

3、方法演示

3.1 example实例解析

3.2 条件方法说明

3.3 Mapper接口方法演示 (以MinisterMapper接口为例)


1、前言

如何创建逆向工程参考:

NO.08 MyBatis创建逆向工程_qq_46053741的博客-CSDN博客

本篇同样参考t_minister表、t_dutie表,表结构参考:NO.06 自定义映射resultMap_qq_46053741的博客-CSDN博客。以逆向工程生成的MinisterMapper接口为例

2、Mapper接口中的方法以及方法说明

本片中的逆向工程以MyBatis3生成。

2.1 MinisterMapper接口方法列表

    int countByExample(MinisterExample example);
    int deleteByExample(MinisterExample example);
    int deleteByPrimaryKey(Integer id);
    int insert(Minister record);
    int insertSelective(Minister record);
    List<Minister> selectByExample(MinisterExample example);
    Minister selectByPrimaryKey(Integer id);
    int updateByExampleSelective(@Param("record") Minister record, @Param("example") MinisterExample example);
    int updateByExample(@Param("record") Minister record, @Param("example") MinisterExample example);
    int updateByPrimaryKeySelective(Minister record);
    int updateByPrimaryKey(Minister record);

 2.2 方法说明

1)int countByExample(MinisterExample example):根据条件获取当前的总记录条数

2)int deleteByExample(MinisterExample example):根据条件删除记录

3)int deleteByPrimaryKey(Integer id):根据主键删除记录

    deleteByExample方法和deleteByPrimaryKey方法的区别:

  • deleteByExample方法可以根据任意的条件删除记录
  • deleteByPrimaryKey方法只能根据主键删除记录

4)int insert(Minister record):向对应的表中添加记录

5)int insertSelective(Minister record):向对应的表中选择性添加记录

     insert方法和insertSelective方法的区别:

  • insert方法可以添加属性值为null的记录
  • insertSelective方法的参数,若有某个属性值为null,在添加记录时不会对相应的字段赋值,该字段根据表的默认值约束赋值。

6)List<Minister> selectByExample(MinisterExample example):根据任意条件查询记录

7)Minister selectByPrimaryKey(Integer id):只能根据主键查询记录

     selectByExample方法和selectByPrimaryKey方法的区别:

  • selectByExample方法可以根据任意的条件查询记录
  • selectByPrimaryKey方法只能根据主键查询记录

8)int updateByExampleSelective(@Param("record") Minister record, @Param("example") MinisterExample example):根据条件选择性修改记录

9)int updateByExample(@Param("record") Minister record, @Param("example") MinisterExample example):根据条件修改记录

updateByExampleSelective方法和updateByExample方法的区别:

  • updateByExampleSelective方法:例:如果参数的某个属性为null,则不会修改表中对应字段的值
  • updateByExample方法:例:如果参数的某个属性为null,则将表中对应字段的值修改为null

10)int updateByPrimaryKeySelective(Minister record):根据主键选择性修改记录

11)int updateByPrimaryKey(Minister record);只能根据主键修改记录

     updateByPrimaryKeySelective方法和updateByPrimaryKey方法的区别与           updateByExampleSelective方法和updateByExample方法的区别相同

3、方法演示

3.1 example实例解析

mybatis的逆向工程中会生成实例及实例对应的Example类(例如:MinisterExample)。如果有需要根据条件执行的某些操作,可以通过创建MinisterExample类的对象,调用createCriteria()方法创建条件对象,用该对象调用各种andXXX、orXXX等方法添加条件参数。在执行Mapper接口中的方法时,将条件对象传递给形参。

例如:根据性别查询人员信息

    @Test
    public void selectByExample() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //创建example对象
        MinisterExample ministerExample=new MinisterExample();
        //创建条件对象并添加查询条件
        ministerExample.createCriteria().andGenderEqualTo("男");
        //调用selectByExample方法,获取人员信息
        List<Minister> result=ministerMapper.selectByExample(ministerExample);
        for(Minister minister:result){
            System.out.println("result:"+minister);
        }
        JdbcUtiles.closeSqlSession(sqlSession);
    }

3.2 条件方法说明

  • setOrderByClause(“字段名 ASC”);    添加升序排列条件,DESC为降序
  • setDistinct(false)    去除重复,boolean型,true为选择不重复的记录。
  • andXxxIsNull    添加字段xxx为null的条件
  • andXxxIsNotNull    添加字段xxx不为null的条件
  • andXxxEqualTo(value)    添加xxx字段等于value条件
  • andXxxNotEqualTo(value)    添加xxx字段不等于value条件
  • andXxxGreaterThan(value)    添加xxx字段大于value条件
  • andXxxGreaterThanOrEqualTo(value)    添加xxx字段大于等于value条件
  • andXxxLessThan(value)    添加xxx字段小于value条件
  • andXxxLessThanOrEqualTo(value)    添加xxx字段小于等于value条件
  • andXxxIn(List<?>)    添加xxx字段值在List<?>条件
  • andXxxNotIn(List<?>)    添加xxx字段值不在List<?>条件
  • andXxxLike(“%”+value+”%”)    添加xxx字段值为value的模糊查询条件
  • andXxxNotLike(“%”+value+”%”)    添加xxx字段值不为value的模糊查询条件
  • andXxxBetween(value1,value2)    添加xxx字段值在value1和value2之间条件
  • andXxxNotBetween(value1,value2)    添加xxx字段值不在value1和value2之间条件

3.3 Mapper接口方法演示 (以MinisterMapper接口为例)

  • 演示countByExample(MinisterExample example)方法:
    @Test
    public void countByExample() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //目标:查询总记录数
        int result1=ministerMapper.countByExample(null);
        System.out.println("result1------>"+result1);
        //目标:查询性别为男的总记录数
        //创建example对象
        MinisterExample ministerExample=new MinisterExample();
        //创建条件对象并添加查询条件
        ministerExample.createCriteria().andGenderEqualTo("男");
        int result2=ministerMapper.countByExample(ministerExample);
        System.out.println("result2------>"+result2);
        JdbcUtiles.closeSqlSession(sqlSession);
    }

结果:


演示deleteByExample(MinisterExample example)方法

    @Test
    public void deleteByExample() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //目标:删除年龄小于20的记录
        //创建example对象
        MinisterExample ministerExample=new MinisterExample();
        //创建条件对象并添加查询条件
        ministerExample.createCriteria().andAgeLessThan(20);
        int result1=0;
        result1=ministerMapper.deleteByExample(ministerExample);
        if(result1!=0){
            System.out.println("数据删除成功");
        }else {
            System.out.println("数据删除失败");
        }
        JdbcUtiles.closeSqlSession(sqlSession);
    }

结果

演示deleteByPrimaryKey(Integer id)方法

    @Test
    public void deleteByPrimaryKey() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //目标:删除主键id等于11的记录
        int result1=0;
        result1=ministerMapper.deleteByPrimaryKey(11);
        if(result1!=0){
            System.out.println("数据删除成功");
        }else {
            System.out.println("数据删除失败");
        }
        JdbcUtiles.closeSqlSession(sqlSession);
    }

结果


演示insert(Minister record)方法

    @Test
    public void insert() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //目标:添加一条部门为null的记录
        int result1=0;
        result1=ministerMapper.insert(new Minister(null,"测试6",17,"男",null));
        if(result1!=0){
            System.out.println("数据添加成功");
        }else {
            System.out.println("数据添加失败");
        }
        JdbcUtiles.closeSqlSession(sqlSession);
    }

结果


演示insertSelective(Minister record)方法

    @Test
    public void insertSelective() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //目标:添加一条部门为null的记录
        int result1=0;
        result1=ministerMapper.insertSelective(new Minister(null,null,17,"男",null));
        if(result1!=0){
            System.out.println("数据添加成功");
        }else {
            System.out.println("数据添加失败");
        }
        JdbcUtiles.closeSqlSession(sqlSession);
    }

结果


演示selectByExample(MinisterExample example)方法

    @Test
    public void selectByExample() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //目标:查询minister_dutie为3,age在20~50之间的人员信息
        //创建example对象
        MinisterExample ministerExample=new MinisterExample();
        //获取条件对象并添加条件
        ministerExample.createCriteria().andMinisterDutieEqualTo("3").andAgeBetween(20,50);
        List<Minister> result=ministerMapper.selectByExample(ministerExample);
        for(Minister minister:result){
            System.out.println("result:"+minister);
        }
        JdbcUtiles.closeSqlSession(sqlSession);
    }

结果


演示selectByPrimaryKey(Integer id)方法

    @Test
    public void selectByPrimaryKey() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //目标:查询id为3的人员信息
        Minister result=ministerMapper.selectByPrimaryKey(3);
        System.out.println("result:"+result);

        JdbcUtiles.closeSqlSession(sqlSession);
    }

结果


演示updateByExampleSelective(@Param("record") Minister record, @Param("example") MinisterExample example)方法

    @Test
    public void updateByExampleSelective() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //目标:将id为12,ministerName为测试二的人员信息修改为ministerName为坤坤
        Minister minister1=ministerMapper.selectByPrimaryKey(12);
        System.out.println("id为12的人员信息:"+minister1);
        //修改名字
        minister1.setMinisterName("坤坤");
        //创建example对象
        MinisterExample ministerExample=new MinisterExample();
        //获取条件对象并添加条件
        ministerExample.createCriteria().andIdEqualTo(12).andMinisterNameEqualTo("测试2");
        int result=0;
        result=ministerMapper.updateByExampleSelective(minister1,ministerExample);
        if(result!=0){
            System.out.println("数据修改成功");
        }else {
            System.out.println("数据修改失败");
        }

        JdbcUtiles.closeSqlSession(sqlSession);
    }

结果


演示updateByExample(@Param("record") Minister record, @Param("example") MinisterExample example)方法

    @Test
    public void updateByExample() {
        SqlSession sqlSession= JdbcUtiles.getSqlSession();
        MinisterMapper ministerMapper=sqlSession.getMapper(MinisterMapper.class);
        //目标:将id为13,ministerName为测试三的人员信息修改为ministerName为null
        Minister minister1=ministerMapper.selectByPrimaryKey(13);
        System.out.println("id为13的人员信息:"+minister1);
        //修改名字
        minister1.setMinisterName(null);
        //创建example对象
        MinisterExample ministerExample=new MinisterExample();
        //获取条件对象并添加条件
        ministerExample.createCriteria().andIdEqualTo(13).andMinisterNameEqualTo("测试3");
        int result=0;
        result=ministerMapper.updateByExample(minister1,ministerExample);
        if(result!=0){
            System.out.println("数据修改成功");
        }else {
            System.out.println("数据修改失败");
        }

        JdbcUtiles.closeSqlSession(sqlSession);
    }

结果


updateByPrimaryKeySelective(Minister record)方法与updateByPrimaryKey(Minister record)方法操作类似updateByExampleSelective(@Param("record") Minister record, @Param("example") MinisterExample example)方法和updateByExample(@Param("record") Minister record, @Param("example") MinisterExample example)方法,不进行演示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值