MyBatis映射文件深入

简介: MyBatis映射文件深入

MyBatis映射文件深入

MyBatis映射文件深入

1.1 动态sql语句

1. 动态sql语句概述
Mybatis的映射文件中,前面我们的SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的SQL是动态变化的,
此时在前面的学习中我们的SQL 就不能满足要求了。
参考的官方文档,描述如下:

1.1 动态sql语句

2. 动态SQL 之
我们根据实体类的不同取值,使用不同的SQL语句来进行查询。比如在id如果不为空时可以根据id查询,如果
username 不同空时还要加入用户名作为条件。这种情况在我们的多条件组合查询中经常会碰到。
< select id="findByCondition" parameterType="user" resultType="user" >
select * from User
< where >
< if test="id!=0" >
and id=#{id}
</ if >
< if test="username!=null" >
and username=#{username}
</ if >
</ where >
</ select >

1.1 动态sql语句

2. 动态SQL 之
当查询条件id和username都存在时,控制台打印的sql语句如下:
... ... ...
// 获得 MyBatis 框架生成的 UserMapper 接口的实现类
UserMapperuserMapper= sqlSession.getMapper(UserMapper. class );
User condition = new User();
condition.setId( 1 );
condition.setUsername( "lucy" );
User user= userMapper.findByCondition(condition);
... ... ...

1.1 动态sql语句

2. 动态SQL 之
当查询条件只有id存在时,控制台打印的sql语句如下:
... ... ...
// 获得 MyBatis 框架生成的 UserMapper 接口的实现类
UserMapperuserMapper= sqlSession.getMapper(UserMapper. class );
User condition = new User();
condition.setId( 1 );
User user= userMapper.findByCondition(condition);
... ... ...

1.1 动态sql语句

3. 动态SQL 之
循环执行sql的拼接操作,例如:SELECT * FROM USER WHERE id IN (1,2,5)。
< select id="findByIds" parameterType="list" resultType="user" >
select * from User
< where >
< foreach collection="array" open="id in(" close=")" item="id" separator="," >
#{id}
</ foreach >
</ where >
</ select >

1.1 动态sql语句

3. 动态SQL 之
测试代码片段如下:
… … …
// 获得 MyBatis 框架生成的 UserMapper 接口的实现类
UserMapperuserMapper= sqlSession.getMapper(UserMapper. class );
int [] ids = new int []{ 2 , 5 };
List<User> userList= userMapper.findByIds(ids);
System. out .println(userList);
... ... ...

1.1 动态sql语句

3. 动态SQL 之
foreach标签的属性含义如下:
<foreach>标签用于遍历集合,它的属性:
  • collection:代表要遍历的集合元素,注意编写时不要写#{}
  • open:代表语句的开始部分
  • close:代表结束部分
  • item:代表遍历集合的每个元素,生成的变量名
  • sperator:代表分隔符

1.2 SQL片段抽取

Sql中可将重复的sql提取出来,使用时用include 引用即可,最终达到sql重用的目的
<!-- 抽取 sql 片段简化编写 -->
< sqlid="selectUser" select * from User</ sql >
< select id="findById" parameterType="int" resultType="user" >
< include refid="selectUser" ></ include > where id=#{id}
</ select >
< select id="findByIds" parameterType="list" resultType="user" >
< include refid="selectUser" ></ include >
< where >
< foreachcollection="array" open="id in(" close=")" item="id" separator="," >
#{id}
</ foreach >
</ where >
</ select >

MyBatis映射文件配置:

<select>:查询
<insert>:插入
<update>:修改
<delete>:删除
<where>:where条件
<if>:if判断
<foreach>:循环
<sql>:sql片段抽取

1.3 知识小结

目录
相关文章
|
14天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
13 0
|
30天前
|
XML Oracle Java
mybatis反向生成实体类、dao层以及映射文件
mybatis反向生成实体类、dao层以及映射文件
13 1
|
1月前
|
SQL Java 数据库连接
|
2月前
|
Java 数据库连接 Maven
使用mybatis插件generator生成实体类,dao层和mapper映射
使用mybatis插件generator生成实体类,dao层和mapper映射
48 0
|
1月前
|
XML Java 数据库连接
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......
48 0
|
30天前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
15 1
|
1月前
|
Java 数据库连接 mybatis
mybatis简单案例源码详细【注释全面】——Dao层映射文件(UserMapper.xml)【重要】
mybatis简单案例源码详细【注释全面】——Dao层映射文件(UserMapper.xml)【重要】
10 0
|
1月前
|
SQL Java 数据库连接
Mybatis中Mapper.xml 文件使用注释遇到的坑
Mybatis中Mapper.xml 文件使用注释遇到的坑
|
1月前
|
XML Java 数据库连接
【Mybatis】XML映射文件
【Mybatis】XML映射文件
25 0
|
2月前
|
Java 数据库连接 mybatis