1、动态sql

使用类似于jstl表达式来实现

2、模糊查找

用一个对象来封装条件

步骤:

1)新建一个条件实体

package com.hy.mybatis.entity;

public class ConditionUser {
private String name; private int minAge; private int maxAge; @Override
public String toString() {
return "ConditionUser [name=" + name + ", minAge=" + minAge
+ ", maxAge=" + maxAge + "]";
} public ConditionUser(String name, int minAge, int maxAge) {
super();
this.name = name;
this.minAge = minAge;
this.maxAge = maxAge;
} public ConditionUser() {
super();
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getMinAge() {
return minAge;
} public void setMinAge(int minAge) {
this.minAge = minAge;
} public int getMaxAge() {
return maxAge;
} public void setMaxAge(int maxAge) {
this.maxAge = maxAge;
} }

2)写sql:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hy.mybatis.mapper.User"> <select id="getUser" parameterType="ConditionUser" resultType="DUser">
select * from d_user where 1=1
<if test="name != '%null%'">
and name like ${name}
</if>
and age between #{minAge} and #{maxAge}
</select> </mapper><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hy.mybatis.mapper.User"> <select id="getUser" parameterType="ConditionUser" resultType="DUser">
select * from d_user where 1=1
<if test="name != '%null%'">
and name like ${name}
</if>
and age between #{minAge} and #{maxAge}
</select> </mapper>

3)测试:

@Test
public void testGetUsers() {
SqlSession session = MyBatisUtil.getSqlSession();
String statement = "com.hy.mybatis.mapper.User.getUser";
List<DUser> users = session.selectList(statement, new ConditionUser("%"+null+"%", 13, 18));
System.out.println(users);
}

最新文章

  1. Data Big Bang
  2. JS判断数组中是否有重复元素的方法
  3. Hadoop Shell命令字典(可收藏)
  4. 05_Excel操作_02_模拟Web环境的User列表导出
  5. Bzoj 2393: Cirno的完美算数教室 容斥原理,深搜
  6. Android app自动化测试之Python+Appium环境搭建
  7. Django新手图文教程
  8. android一些常用的代码2(收藏)
  9. 常见的 http 状态码
  10. 再好好聊聊 HTTP 里的 Cookie | 实用 HTTP
  11. OpenCV3编程入门-读书笔记2-core组件
  12. Nginx 如何通过连接池处理网络请求
  13. SQL查询数据并插入新表
  14. MySQL关于根据日期查询数据的sql语句
  15. 安全工具-cansina
  16. ASP入门(五)- VBScript过程和函数
  17. UI基础:UIControl及其子类
  18. 用cmd导入oracle的.dmp文件和修改oracle管理员密码
  19. c++ stringstream的使用
  20. jQuery 异步和同步请求

热门文章

  1. Android studio快捷键大全 和 eclipse对照(原)
  2. C++ 容器 LIST VECTOR erase
  3. python和nodejs的aes128加密对比
  4. Atom 安装 Packages 的笨办法
  5. Activity的Launch Mode
  6. xmind的第十三天笔记
  7. VS2010调试C程序,总是一闪而过
  8. ios常见的页面传值方式
  9. 传统开发模型vs敏捷开发模型——过程模型的变革
  10. s2 devMode cmdshell