怎么在mybatis中实现一个动态SQL和模糊查询功能

  介绍

这期内容当中小编将会给大家带来有关怎么在mybatis中实现一个动态SQL和模糊查询功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

新建表d_user:

create  table  d_user (,   ,id  int  primary  key  auto_increment,,   ,name  varchar (10),   int, age  (3)   ),,      insert  into  d_user(姓名、年龄),值(& # 39;汤姆# 39;,12),,   insert  into  d_user(姓名、年龄),值(& # 39;鲍勃# 39;,13),,   insert  into  d_user(姓名、年龄),值(& # 39;杰克# 39;,18);

建表成功:

怎么在mybatis中实现一个动态SQL和模糊查询功能

新建实体类用户:

public  class  User  {   ,private  Integer  id;   ,private  String 名称;   ,private  Integer 年龄;//getters 以及setter      ,@Override   ,public  String  toString (), {   return 才能“User  [id=? +, id  +,,,,的名字=?+,name  +,,,,岁=?+,age  +,“]”;   ,}      ,public 用户(Integer  id, String 名字,,Integer 年龄),{   超级才能();   时间=this.id 才能;id;   this.name 才能=,名称;   时间=this.age 才能;年龄;   ,}      ,public 用户(),{   超级才能();   ,}   }

创建查询条件实体类ConditionUser:

public  class  ConditionUser  {   ,private  String 名称;   ,private  int  minAge;   ,private  int  maxAge;//getters 以及setter      ,public  ConditionUser(名称、String  int  minAge,, int  maxAge), {   超级才能();   this.name 才能=,名称;   时间=this.minAge 才能;minAge;   时间=this.maxAge 才能;maxAge;   ,}      ,public  ConditionUser (), {   超级才能();   ,}   }

新建映射文件usermap。xml:

& lt; ? xml  version=?.0“,编码=癠TF-8", ?比;   & lt; ! DOCTYPE  mapper  PUBLIC “-//mybatis.org//DTD  mapper  3.0//EN",“http://mybatis.org/dtd/mybatis-3-mapper.dtd"比;=& lt; mapper 名称空间“com.mybatis.test7.userMapper"祝辞   ,& lt; select  id=癵etUser", parameterType=癈onditionUser", resultType=癠ser"比;   SELECT  *,才能得到d_user  WHERE  age 和gt;=, # {minAge},以及age , lt;=, # {maxAge}   & lt;才能if 测试=懊?=null"比;   ,,以及name  LIKE  CONCAT (CONCAT(& # 39; % & # 39;, #{名称}),& # 39;% & # 39;)& lt;/if>   ,& lt;/select>   & lt;/mapper>

编写测试类:

public  class  Test  {      ,private  SqlSessionFactory  sessionFactory;   ,private  SqlSession 会话;      ,@Before   ,public  void  init () {//读才能取配置文件   String 才能;resource =,“conf.xml";   InputStream 才能;is =, this.getClass () .getClassLoader () .getResourceAsStream(资源);//才能创建SqlSessionFactory和SqlSession   时间=sessionFactory 才能;new  SqlSessionFactoryBuilder () .build(是);   时间=session 才能;sessionFactory.openSession ();   ,}      ,@After   ,public  void  free () {   session.commit才能();   session.close才能();   ,}         ,@org.junit.Test   ,public  void  getUser (), {   String 才能;statement =,“com.mybatis.test7.userMapper" +“.getUser";   ConditionUser 才能;ConditionUser =, new  ConditionUser (“o",, 13日,18);   List<才能;User>, list =, session.selectList(声明,conditionUser);   System.out.println才能(列表);   ,}   }

运行结果:

怎么在mybatis中实现一个动态SQL和模糊查询功能

<强>注意:

1。在配置文件中编写sql语句时,为防止大于号和小于号在表示大小关系和表示标签符号之间产生混淆,所以通常用,gt;和,lt;来代替sql语句中大于号和小于号。

2。SQL语在句中添加动态SQL标签如果的原因是,当在后台获取的名字属性值为null时,防止生成,名字像%零%的条件判断语句,正确的逻辑应该是,当传来的名字属性值为null时,取消此筛选条件,即不使用,名字?的判断条件。在mybatis中,可用的动态SQL标签有:如果选择(当,否则),削减(,),foreach。

怎么在mybatis中实现一个动态SQL和模糊查询功能