介绍
这期内容当中小编将会给大家带来有关怎么在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);
建表成功:
新建实体类用户:
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才能(列表); ,} }
运行结果:
<强>注意:强>
1。在配置文件中编写sql语句时,为防止大于号和小于号在表示大小关系和表示标签符号之间产生混淆,所以通常用,gt;和,lt;来代替sql语句中大于号和小于号。
2。SQL语在句中添加动态SQL标签如果的原因是,当在后台获取的名字属性值为null时,防止生成,名字像%零%的条件判断语句,正确的逻辑应该是,当传来的名字属性值为null时,取消此筛选条件,即不使用,名字?的判断条件。在mybatis中,可用的动态SQL标签有:如果选择(当,否则),削减(,),foreach。