Mybatis中Example的用法

Example简单介绍

1.exampleMybatis数据层框架中的一个工具,可以帮我们完成sql语句中where条件句的书写,相当于where后面的部分,我们可以根据不同的条件来查询和操作数据库,简化书写sql的过程。

2.用的MyBatis逆向工程可以自动生成Example类。

Example具体用法

1.Example类的生成

只要在generatorConfig.xml 文件中用表名生成对应的实体类时将生成Example的信息都变为true即可。
如:

    <table tableName="user"
       enableCountByExample="true"
       enableUpdateByExample="true"
       enableDeleteByExample="true"
       enableSelectByExample="true"
        selectByExampleQueryId="false"
    </table>

2.Example类的具体用法

1.每个实体类都对应一个xxxExample.java类,这个类可以用来自定义sql,用Mybait自动生成工具生成了这个类后,可以看到类里面一般有这些参数:

 orderByClause:用于指定ORDER BY条件,这个条件没有构造方法,直接通过传递字符串值指定。

 distinct: 是用来指定是否要去重查询的,true为去重,false不去重。

 oredCriteriia:是用来指定查询条件的。

2.Example.java中包含一个static的内部类 Criteria,在Criteria中有很多方法,主要是定义SQL 语 句where后的查询条件,Criterion是最基本的Where条件,针对字段进行筛选。

3.Example类中的一些方法说明:

example.setOrderByClause(“字段名 ASC”); //添加升序排列条件,DESC为降序
example.setDistinct(false) //去除重复,boolean型,true为选择不重复的记录。

criteria.andXxxIsNull //添加字段xxx为null的条件
criteria.andXxxIsNotNull //添加字段xxx不为null的条件
criteria.andXxxEqualTo(value) //添加xxx字段等于value条件
criteria.andXxxNotEqualTo(value) //添加xxx字段不等于value条件
criteria.andXxxGreaterThan(value) //添加xxx字段大于value条件
criteria.andXxxGreaterThanOrEqualTo(value) //添加xxx字段大于等于value条件
criteria.andXxxLessThan(value) //添加xxx字段小于value条件
criteria.andXxxLessThanOrEqualTo(value) //添加xxx字段小于等于value条件
criteria.andXxxIn(List<>) //添加xxx字段值在List<?>条件
criteria.andXxxNotIn(List<>) //添加xxx字段值不在List<?>条件
criteria.andXxxLike(%+value+%) //添加xxx字段值为value的模糊查询条件
criteria.andXxxNotLike(%+value+%) //添加xxx字段值不为value的模糊查询条件
criteria.andXxxBetween(value1,value2) //添加xxx字段值在value1和value2之间条件
criteria.andXxxNotBetween(value1,value2) //添加xxx字段值不在value1和value2之间条件

Examle在基础中心的应用实例

以查询系统用户详情接口qrySystemUserDetail为例:

    Long sysUserIdRec = qrySystemUserDetailReq.getSysUserId();
    String sysUserCode = qrySystemUserDetailReq.getSysUserCode();

    SystemUserExample systemUserExample = new SystemUserExample();
    SystemUserExample.Criteria criteria = systemUserExample.createCriteria();

    if (sysUserIdRec != null)
        criteria.andSysUserIdEqualTo(sysUserIdRec);

    if (sysUserCode != null)
        criteria.andSysUserCodeEqualTo(sysUserCode);

    List<SystemUser> systemUserList = systemUserMapper.selectByExample(systemUserExample);

这是用where语句处理and查询条件的情况,

相当于:

select * from system_user where sys_user_id={#sysUserId} and sys_user_code={#sysUserCode}

Examle其他用法补充
1.用Example的方法给查询结果一些限制,如:

 //指定要进行去重查询
systemUserExample.setDistinct(true);//去重

//指定ORDER BY条件
systemUserExample.setOrderByClause(“字段名 ASC”);//升序

2.用where语句处理or查询条件的情况,如:

 UserExample.Criteria criteria1 = example.createCriteria();
 UserExample.Criteria criteria2 = example.createCriteria();
 if(!StringUtils.isNotBlank(user.getName())){
 Criteria1.andNameEqualTo(user.getName());
 }
 if(!StringUtils.isNotBlank(user.getSex())){
 Criteria2.andSexEqualTo(user.getSex());
 }
 Example.or(criteria2);
 List<User> userList=userMapper.selectByExample(example);

相当于:

select * from user where name={#user.name} or sex={#user.sex}

3.模糊查询,如:

 if(!StringUtils.isNotBlank(user.getName())){
 criteria.andNameLIke(%+user.getName()+%);
 }
 List<User> userList=userMapper.selectByExample(example);

相当于:

select * from user where name like %{#user.name}%
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值