MyBatis 提供了XML配置和注解配置两种方式 。今天就来搞搞这两种方式是如何实现的 。
MyBatis 的真正强大在于它的语句映射,这是它的魔力所在 。由于它的异常强大,映射器的 XML 文件就显得相对简单 。如果拿它跟具有相同功能的JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码 。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码 。来自官网 。
Mybatis映射九个顶级元素:
文章插图
- mApper:映射文件的根节点,只有一个属性namespace(命名空间),作用如下:
- 用于区分不同的mapper,全局唯一 。
- 绑定DAO接口,即面向接口编程,当绑定一个接口,就不用写此接口的实现类,会通过接口的完全限定名找到对应的mapper配置来执行SQL语句,所以,namespace的命名必须要写接口的完全限定名 。
- cache:配置给定命名空间的缓存 。
- cache-ref:从其他命名空间引用缓存配置 。
- resultMap:用来描述数据库结果集和对象的对应关系 。
- sql:可以重用的SQL块,也可以被其他语句引用 。通常是存放一些公用性的SQL 。
- insert:映射插入语句 。
- update:更新映射语句 。
- delete:删除映射语句 。
- select:映射查询语句 。
文章插图
xml方式九个顶级映射元素对应标签:
<mapper namespace="com.tian.mybatis.mapper.UserMapper"><resultMap id="" type=""></resultMap><sql id=""></sql><cache blocking="" ></cache><cache-ref namespace=""></cache-ref><select id="selectUserById"></select><insert id="insert" ></insert><update id=""></update><delete id=""></delete></mapper>
select详解 文章插图
可以看得出,后面可选项还是蛮多的 。下面是官网对每项的解释 。
文章插图
select使用案例
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.tian.mybatis.mapper.UserMapper"><select id="selectUserById"resultType="com.tian.mybatis.entity.User" parameterType="int" >select * from m_user where id = #{id}</select></mapper>
- id必须在这个Mapper中是唯一的,可以被用来引用这条语句,这个id必须与之对应的是XxxMapper.JAVA中的方法,必须是一一对应 。
- 返回类型:User类型,resultType:查询语句返回结果类型的完全限定名或别名 。别名使用方式和parameterType是一样的 。
- 参数:整形,表示查询语句传入参数的类型和完全限定名或别名 。支持基础数据类型和复杂数据类型 。
别名与参数映射类型如下:
文章插图
返回类型中别名的使用,注意:
如果是我们的entity类,那么resultType是无法使用别名的,只能使用resultMap才可以使用别名 。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.tian.mybatis.mapper.UserMapper"><resultMap id="User" type="com.tian.mybatis.entity.User"/><select id="selectUserById"resultMap="User" parameterType="int" >select * from m_user where id = #{id}</select></mapper>
但是如果使用的上面映射表里,也可以直接使用别名 。数据库里有两条数据:
文章插图
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.tian.mybatis.mapper.UserMapper"><select id="countUser" resultType="int">select count(1) from m_user</select></mapper>
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 谁在比赛中扣断过篮板?
- 高级语言中的语句在汇编中是如何实现的
- WSL2 中使用 systemctl 命令
- Mybatis如何连接多个数据源
- 白茶饼中间黑色,安吉白茶绿茶中的白茶
- 史书上不会公开的历史真相 中国古代历史未解之谜
- 绿茶的种种分类方式,中国茶是什么分类的
- 牙齿中间有黑色的东西洗不掉怎么办 牙齿里面有黑色的东西怎么洗干净
- 蒸红枣馒头的做法大全
- 有颜色的馒头怎么做