Mybatis中Example的用法


  Example簡單介紹

  1.example是Mybatis數據層框架中的一個工具,可以幫我們完成sql語句中where條件句的書寫,相當於where后面的部分,我們可以根據不同的條件來查詢和操作數據庫,簡化書寫sql的過程。

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

  Example具體用法

  1.Example類的生成

  只要在generatorConfig.xml 文件中用表名生成對應的實體類時將生成Example的信息都變為true即可。

  如:

  enableCountByExample="true"

  enableUpdateByExample="true"

  enableDeleteByExample="true"

  enableSelectByExample="true"

  selectByExampleQueryId="false"

  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 systemUserList = systemUserMapper.selectByExample(systemUserExample);

  這是用where語句處理and查詢條件的情況,

  相當於:select * from system_user where sys_user_id={#sysUserId} and sys_user_code={#sysUserCode}

  Examle其他用法補充無錫男科醫院哪家好 http://www.zzch120.com/

  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 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 userList=userMapper.selectByExample(example);

  相當於:select * from user where name like %{#user.name}%


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM