resultMap相关
功能 | 标签名称 |
---|---|
改 | update |
mapper类 | namespace |
配置java对象属性与查询结果集中列名对于关系 | resultMap |
id唯一标示,可表示sql中主键id,或作为resultMap别名 | id |
返回值的类名 | type |
用于设置普通字段与领域模型属性的映射关系 | result |
执行sql时搜索到的字段名称,as后面那些 | column |
对应实体类中的属性 | property |
对应数据库中数据类型 | jdbcType |
配置关联关系 一对一 | association |
配置关联关系 一对多,三种使用方式(list、array、map),常和ofType配套使用 | collection |
映射到list集合属性中pojo的类型 | ofType |
继承(同java中的继承一样理解) | extend |
sql标签相关
功能 | 标签名称 |
---|---|
定义常量 | sql |
引用常量 | include |
引用sqlid中的别名 | refid |
select 相关
功能 | 标签名称 |
---|---|
查 | select |
mapper中方法名唯一id | id |
语句返回值类型或别名 | resultType |
增删改标签相关
功能 | 标签名称 |
---|---|
增 | insert |
删 | delete |
可使用来自动生成id(其他数字的值也一样可以) | useGeneratedKeys |
自动增长的字段,通常指id | keyProperty |
传给此语句的参数的全路径名或别名 | parameterType |
多余关键字的标签 | where,set,trim |
控制动态SQL拼接 | foreach |
if条件判断 | if |
循环语言 | foreach |
前缀 | prefix,open |
后缀 | suffix,close |
分隔符 | suffixOverrides |
迭代过程中每一个元素的别名 | item |
迭代过程中每次迭代到的位置 | index |
mapper.xml实例解释
<?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" >
<mapper namespace="org.minp.vhr.mapper.MenuMapper">
<resultMap id="BaseResultMap" type="org.minp.vhr.model.Menu">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="url" property="url" jdbcType="VARCHAR"/>
<result column="path" property="path" jdbcType="VARCHAR"/>
<result column="component" property="component" jdbcType="VARCHAR"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="iconCls" property="iconCls" jdbcType="VARCHAR"/>
<result column="parentId" property="parentId" jdbcType="INTEGER"/>
<result column="enabled" property="enabled" jdbcType="BIT"/>
<association property="meta" javaType="org.minp.vhr.model.Meta">
<result column="keepAlive" property="keepAlive" jdbcType="BIT"/>
<result column="requireAuth" property="requireAuth" jdbcType="BIT"/>
</association>
</resultMap>
<resultMap id="Menus2" type="org.minp.vhr.model.Menu" extends="BaseResultMap">
<collection property="children" ofType="org.minp.vhr.model.Menu">
<id column="id2" property="id" jdbcType="INTEGER"/>
<result column="url2" property="url" jdbcType="VARCHAR"/>
<result column="path2" property="path" jdbcType="VARCHAR"/>
<result column="component2" property="component" jdbcType="VARCHAR"/>
<result column="name2" property="name" jdbcType="VARCHAR"/>
<result column="iconCls2" property="iconCls" jdbcType="VARCHAR"/>
<result column="parentId2" property="parentId" jdbcType="INTEGER"/>
<result column="enabled2" property="enabled" jdbcType="BIT"/>
<association property="meta" javaType="org.minp.vhr.model.Meta">
<result column="keepAlive2" property="keepAlive" jdbcType="BIT"/>
<result column="requireAuth2" property="requireAuth" jdbcType="BIT"/>
</association>
</collection>
</resultMap>
<resultMap id="MenuWithRole" type="org.minp.vhr.model.Menu" extends="BaseResultMap">
<collection property="roles" ofType="org.minp.vhr.model.Role">
<id column="rid" property="id"/>
<result column="rname" property="name"/>
<result column="rnameZh" property="nameZh"/>
</collection>
</resultMap>
<resultMap id="MenuWithChildren" type="org.minp.vhr.model.Menu" extends="BaseResultMap">
<id column="id1" property="id"/>
<result column="name1" property="name"/>
<collection property="children" ofType="org.minp.vhr.model.Menu">
<id column="id2" property="id"/>
<result column="name2" property="name"/>
<collection property="children" ofType="org.minp.vhr.model.Menu">
<id column="id3" property="id"/>
<result column="name3" property="name"/>
</collection>
</collection>
</resultMap>
<select id="getMidsByRid" resultType="java.lang.Integer">
select mid from menu_role where rid=#{rid};
</select>
<select id="getAllMenus" resultMap="MenuWithChildren">
select m1.`id` as id1,m1.`name` as name1,m2.`id` as id2,m2.`name` as name2,m3.`id` as id3,m3.`name` as name3
from menu m1,menu m2,menu m3 where m1.`id`=m2.`parentId` and m2.`id`=m3.`parentId` and m3.`enabled`=true order
by m1.`id`,m2.`id`,m3.`id`
</select>
<select id="getAllMenusWithRole" resultMap="MenuWithRole">
select m.*,r.`id` as rid,r.`name` as rname,r.`nameZh` as rnameZh from menu m,menu_role mr,role r where
m.`id`=mr.`mid` and mr.`rid`=r.`id` order by m.`id`
</select>
<select id="getMenusByHrId" resultMap="Menus2">
select distinct m1.*,m2.`id` as id2,m2.`component` as component2,m2.`enabled` as enabled2,m2.`iconCls` as
iconCls2,m2.`keepAlive` as keepAlive2,m2.`name` as name2,m2.`parentId` as parentId2,m2.`requireAuth` as
requireAuth2,m2.`path` as path2 from menu m1,menu m2,hr_role hrr,menu_role mr where m1.`id`=m2.`parentId` and
hrr.`hrid`=#{hrid} and hrr.`rid`=mr.`rid` and mr.`mid`=m2.`id` and m2.`enabled`=true order by m1.`id`,m2.`id`
</select>
<sql id="Base_Column_List">
id, url, path, component, name, iconCls, keepAlive, requireAuth, parentId, enabled
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
select
<include refid="Base_Column_List"/>
from menu
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from menu
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="org.minp.vhr.model.Menu">
insert into menu (id, url, path)
values (#{id,jdbcType=INTEGER}, #{url,jdbcType=VARCHAR}, #{path,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="org.minp.vhr.model.Menu">
insert into menu
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="url != null">
url,
</if>
....
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="url != null">
#{url,jdbcType=VARCHAR},
</if>
....
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="org.minp.vhr.model.Menu">
update menu
<set>
<if test="url != null">
url = #{url,jdbcType=VARCHAR},
</if>
<if test="path != null">
path = #{path,jdbcType=VARCHAR},
</if>
....
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="org.minp.vhr.model.Menu">
update menu
set url = #{url,jdbcType=VARCHAR},
path = #{path,jdbcType=VARCHAR},
....
</update>
</mapper>