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

时间: 2024-11-08 22:07:00

Mybatis学习笔记-动态SQL与模糊查询的相关文章

07_动态SQL与模糊查询

1 需求 实现多条件查询用户 姓名模糊匹配 年龄在指定的最小值到最大值之间 2 准备表和数据 create table d_user( id int primary key auto_increment, name varchar(10), age int(3) ); insert into d_user(name,age) values('Tom',12); insert into d_user(name,age) values('Bob',13); insert into d_user(na

Mybatis学习之动态sql语句(7)

Mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中的choose 很类似. 3. trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀) 4. where (主要是用来简化sql语句中where条件判断的,能智能的

mybatis学习之动态sql

mybatis的动态sql语句很强大,在mapper映射文件中使用简单的标签即可实现该效果,下面一个个记录: 1.select查询 简单的select类似如下: <select id="findById" resultMap="StudentResult" parameterType="Integer"> select * from t_student where id = #{id} </select> 1)if(常用于

动态SQL之模糊查询

模糊查询学习了三种: DAO层 // 可以使用 List<User> wherelike01(String user_name); // 忘记 List<User> wherelike02(Map<String, Object> map); // 推荐使用 List<User> wherelike03(String user_name) 测试类 @Test public void where语句测试01() { SqlSession sqlSession =

MyBatis动态SQL与模糊查询

sqlxml <?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="PersonCondition"&

MyBatis学习笔记五——实现关联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name VA

MyBatis:学习笔记(3)——关联查询

MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统,如果我们将用户信息和订单信息都保存在user表中,这样就不存在联结关系,因为我们仅仅操作一张表就好. 但是这是非常不明智的选择,举例来说,一个用户可以拥有多个订单,如果保存在一个表中,势必会导致用户信息的多次出现,因为每个订单绑定的用户信息都是相同的. 所以我们尽量要将不同的信息存储与不同的表中,但

mybatis学习笔记(11)-多对多查询

mybatis学习笔记(11)-多对多查询 mybatis学习笔记11-多对多查询 示例 多对多查询总结 resultMap总结 本文实现多对多查询,查询用户及用户购买商品信息. 示例 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表:orders.orderdetail.items sql SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdeta

mybatis学习笔记(11)-一对多查询

mybatis学习笔记(11)-一对多查询 mybatis学习笔记11-一对多查询 示例 小结 本文实现一对多查询,查询订单及订单明细的信息 示例 sql 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.item