Mybatis学习笔记-动态SQL与模糊查询

需求:实现多条件查询用户(姓名模糊匹配, 年龄在指定的最小值到最大值之间)

User.java实体类

public class User {
	private int id;
	private String name;
	private int age;
	//...
}


ConditionUser.java

public class ConditionUser {
	private String name;
	private int minAge;
	private int maxAge;
	//...
}
	<!-- 
	实现多条件查询用户(姓名模糊匹配, 年龄在指定的最小值到最大值之间)
	类似jstl表达式
	 -->
	<select id="getUser" parameterType="com.mybatis.test05.ConditionUser" resultType="com.mybatis.test05.User">
		select * from d_user where 
		
		<if test='name != "%null%"'>
			 name like #{name} and 
		</if>
		
		age between #{minAge} and #{maxAge}
	</select>

测试

SqlSessionFactory factory = MybatisUtil.getFactory();
SqlSession session = factory.openSession();
String statement = "com.mybatis.test05.userMapper.getUser";
String name = "o";
name = null;
ConditionUser parameter = new ConditionUser("%"+name+"%", 13, 18);
List<User> list = session.selectList(statement, parameter);
System.out.println(list);
session.close();


MyBatis中可用的动态SQL标签

if

choose (when otherwise)

trim (where set)

foreach

你可能感兴趣的:(mybatis,动态sql)