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>标签的使用,感兴趣的读者可以移步查阅,链接如下所示:

MyBatis学习:动态SQL中<foreach>标签的使用_你是我的日月星河的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/weixin_46281472/article/details/127176953

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、我的下一篇博文

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐