今天详细看下Mybatis mapper映射文件,由于MyBatis强大的语句映射,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。
记录下官网:
官网:mybatis.org/mybatis-3/zh/sqlmap-xml.html
我们按照顺序来看下这mybatis的几个顶级元素标签:
SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):
- cache – 给定命名空间的缓存配置。
- cache-ref – 其他命名空间缓存配置的引用。
- resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象
- sql – 可被其他语句引用的可重用语句块。
- insert – 映射插入语句
- update – 映射更新语句
- delete – 映射删除语句
- select – 映射查询语句
一、缓存 <cache/>
二、自定义缓存:
三、resultMap – 用来描述如何从数据库结果集中来加载对象
<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.xing.mapper.UserMapper"><resultMapid="BaseResultMap"type="com.xing.entity.UserEntity"autoMapping="true"><resultcolumn="id"jdbcType="INTEGER"property="id"/><resultcolumn="user_name"jdbcType="VARCHAR"property="userName"/><resultcolumn="pass_word"jdbcType="VARCHAR"property="passWord"/><resultcolumn="real_name"jdbcType="VARCHAR"property="realName"/></resultMap></mapper>
可以看到以上代码就实现了数据库表user(UserMapper)及字段和属性的映射,详解可以看官网。
四、sql
<sql/>用来定义可重用的 SQL 代码片段,以便在其它语句中使用。参数可以静态地(在加载的时候)确定下来,并且可以在不同的 include 元素中定义不同的参数值。
<sqlid="userColumns">${alias}.id,${alias}.username,${alias}.password</sql>这个SQL片段可以在其它语句中使用,例如:<selectid="selectUsers"resultType="map">select<includerefid="userColumns"><propertyname="alias"value="t1"/></include>, <includerefid="userColumns"><propertyname="alias"value="t2"/></include>fromsome_tablet1crossjoinsome_tablet2</select>也可以在include元素的refid属性或内部语句中使用属性值,例如:<sqlid="sometable">${prefix}Table</sql><sqlid="someinclude">from<includerefid="${include_target}"/></sql><selectid="select"resultType="map">selectfield1, field2, field3<includerefid="someinclude"><propertyname="prefix"value="Some"/><propertyname="include_target"value="sometable"/></include></select>
五、insert
新增、更新、删除的标签属性都差不多
<insertid="insert"parameterType="com.xing.entity.UserEntity">insertintouser (id, userName, passWord,realName) values (#{id,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},#{realname,jdbcType=VARCHAR}) </insert>
六、update
<updateid="updateByExampleSelective"parameterType="map">updateuser<set><iftest="record.id != null">id=#{record.id,jdbcType=INTEGER}, </if><iftest="record.username != null">userName=#{record.username,jdbcType=VARCHAR}, </if><iftest="record.password != null">passWord=#{record.password,jdbcType=VARCHAR}, </if><iftest="record.realname != null">realName=#{record.realname,jdbcType=VARCHAR}, </if></set><iftest="_parameter != null"><includerefid="Update_By_Example_Where_Clause"/></if></update>
七、delete
<deleteid="deleteByPrimaryKey"parameterType="java.lang.Integer">deletefromuserwhereid=#{id,jdbcType=INTEGER} </delete>
八、Select 查询
<selectid="getOne"resultType="com.xing.entity.UserEntity"parameterType="int"flushCache="false"useCache="true"timeout="10000"fetchSize="256"statementType="PREPARED">select*fromuserwhereid=#{id} </select>
总结:
Mybatis mapper xml文件的几个顶级元素,点击”阅读原文“可以直接到Mybatis中文网,每个标签及属性都写的明明白白的。