Mybatis全部标签与解释说明二,含实例

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>
发布了22 篇原创文章 · 获赞 9 · 访问量 3740

猜你喜欢

转载自blog.csdn.net/king101125s/article/details/104188614
今日推荐