MyBatis学习:动态SQL mapper.XML配置文件中<sql>标签和<include>标签的使用
我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具
1、本篇博文的背景和目的
我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具类MyBatisUtil中,以减少代码量。记录了dao层接口的实现以及为什么要实现它。记录了MyBatis动态代理和使用动态代理的要求以及使用了动态代理生成的实现类。记录了MyBatis框架下传参的五种方法,占位符#和$,如何自定义别名,resultType属性的使用方法,如何处理数据库中列名和JAVA对象属性名不一致的情况,如何组装传递模糊查询的条件(一共有两种方式),动态SQL中<if>标签,<where>标签的使用。本篇博文记录<sql>标签的使用。
2、我的上一篇博文
我上一篇博文记录的是mapper.xml文件中<foreach>标签的使用,感兴趣的读者可以移步查阅,链接如下所示:
3、<sql>标签解决的问题和使用它的语法
sql标签表示一段sql代码, 可以是表名,几个字段,或者是 where条件等;
其实就是代码复用的一种方案。
使用方法(语法):
1)首先就是 在 mapper文件中定义 sql代码片段,
<sql id=" 唯一的一个字符串 "> 部分SQL语句 </sql>
2)在其他的位置使用标签 <include id=" 唯一的一个字符串"/> 引用某一个代码片段 ,其实是
MyBatis将这个代码片段粘贴了过来;
或者应该说:<sql>标签是和<include>标签是必须结合一起使用的。
在一个mapper文件中,代码片段是可以有许多个的;
按照规范:<sql></sql>标签都放在mapper.xml文件的前面。
4、使用<sql>标签和<include>标签的代码(Maven项目)
dao层方法代码:
//测试使用<sql>标签
List<Student> selectAll();
mapper.XML文件代码:
<!-- 定义一个代码片段-->
<sql id="selectStudent">
select * from student
</sql>
<!--测试使用 sql标签和include标签-->
<select id="selectAll" resultType="com.dcy.domain.Student">
<include refid="selectStudent"></include>
</select>
Main方法中测试代码如下:
package com.dcy;
import com.dcy.dao.StudentDao;
import com.dcy.domain.Student;
import com.dcy.utils.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
//测试使用<sql>标签和<include>标签
public class Starter05 {
public static void main(String[] args) {
SqlSession sqlSession = MyBatisUtil.getSqlSession();
StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
List<Student> students = studentDao.selectAll();
System.out.println(students);
}
}
5、本博文所用代码的仓库地址
6、我的下一篇博文
更多推荐
所有评论(0)