Day09-09.Mybatis-XML映射文件
1.XML映射文件:
1.XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。
Java文件下存放的是Java的源代码,resources这个目录下存放的才是配置文件。所以我们需要再resource这个目录下再来创建一个包,
而这个包名需要和mapper接口所在包保持一致。包名都是com.itheima.mapper。
2.XML映射文件的namespace属性和Mapper接口全限定名一致。
3.XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。
2.EmpMapper.XML解析:
1.全限定名获取方式,右键 ===》copy reference
<?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">
#上面这段代码可以不用记,可以在mybatis中文网里面的"探究已映射的 SQL 语句"里面粘贴,只是个约束
<mapper namespace="com.itheima.springbootmybatiscrud2.mapper.EmpMapper">
# resultType:单条记录所封装的类型(全限定名),如果返回数据是集合,就是集合的泛型的全限定名
<select id="selectAll2" resultType="com.itheima.springbootmybatiscrud2.Pojo.Emp">
select * from emp where name like concat('%', #{name}, '%') and gender = #{gender} and entrydate between #{begin} and #{end} " +
" order by update_time desc
</select>
</mapper>
3.定义XML映射文件的时候,为什么要遵守这三点规范??
1.通过mybatis这个框架来操作数据库,最终只需要调用Mapper接口中的方法就可以完成数据库的操作。但是需要明白,最终我们操作数据库,并不是直接通过这个方法来操作数据库,而是执行了与这个方法对应的sql语句来完成数据库的操作。所以关键点是,通过这个接口当中的selectAll2这个方法怎么找到与之关联的sql语句。
2.之前使用注解的方式就不会存在这个问题,因为使用注解的方式进行配置,我们执行这个接口方法,最终执行的就是上面的sql语句,是绑定在一起的。
3.但是如果采用的是XML配置文件的形式来配置这个sql语句,现在这个接口方法的定义和这个XML配置文件当中配置的sql语句它是分开的。现在需要做的就是要根据这个接口中的这个方法,来找到对应的sql语句。
4.如果我们按照这三点规范来定义配置文件,此时我们在调用EmpMapper这个接口当中的selectAll2这个方法的时候,此时mybatis框架会自动的去查找namespace的属性值和这个接口全类目相同的这份XML映射文件,并且在这份XML映射文件当中,找到id属性值与方法名相同的这条sql语句,最终来运行这条sql语句,从而完成数据库的操作。
4.MybatisX插件:
1.MybatisX是一款基于IDEA的快速开发Mybatis的插件,为效率而生。
2.安装:
File ===》Settings ===》Plugins ===》搜索MybatisX
3.点击前面的小鸟就可以在方法和定义的sql语句之间切换。
4.使用Mybatis的注解,主要是完成一些简单的增删改查功能。如果需要实现复杂的SQL语句,建议使用XML来配置映射语句。
5.官方说明:
https://mybatis.net.cn/getting-started.html
6.使用注解还是XML映射文件定义SQL语句??
1.使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。
因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。
2.选择何种方式来配置映射,以及认为是否应该要统一映射语句定义的形式,完全取决于你和你的团队。
换句话说,永远不要拘泥于一种方式,你可以很轻松的在基于注解和 XML 的语句映射方式间自由移植和切换。
5.小结:
1.XML文件的名称与Mapper接口名称一致,并且放置在相同包下(同包同名)。
2.XML文件的namespace属性为Mapper接口全限定名一致。
3.XML文件中SQL语句的id与Mapper接口中的方法名保持一致。