Mybaits中Mapper文件技巧
附上一个mapper文件,自行体会。
<?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="ShopUser">
<resultMap id="ShopUserMap" type="ShopUser">
<id column="id" property="id"/>
<result column="shop_id" property="shopId"/>
<result column="shop_name" property="shopName"/>
<result column="user_id" property="userId"/>
<result column="mobile" property="mobile"/>
<result column="user_name" property="userName"/>
<result column="discount" property="discount"/>
<result column="extra_json" property="extraJson"/>
<result column="created_at" property="createdAt"/>
<result column="updated_at" property="updatedAt"/>
</resultMap>
<sql id="tb">
vega_shop_users
</sql>
<sql id="cols_all">
id,
<include refid="cols_exclude_id"/>
</sql>
<sql id="cols_exclude_id">
shop_id, shop_name,mobile, user_id, user_name, discount, extra_json, created_at, updated_at
</sql>
<sql id="vals">
#{shopId}, #{shopName},#{mobile}, #{userId}, #{userName}, #{discount}, #{extraJson}, now(), now()
</sql>
<sql id="queryCondition">
where 1 = 1
<if test="shopId != null">and `shop_id` = #{shopId}</if>
<if test="shopName != null">and `shop_name` = #{shopName}</if>
<if test="userId != null">and `user_id` = #{userId}</if>
<if test="mobile != null">and `mobile` = #{mobile}</if>
<if test="userName != null">and `user_name` = #{userName}</if>
<if test="discount != null">and `discount` = #{discount}</if>
<if test="extraJson != null">and `extra_json` = #{extraJson}</if>
<if test="startAt != null">and created_at > #{startAt}</if>
<if test="endAt != null">and created_at < #{endAt}</if>
</sql>
<sql id="criteria">
<if test="id">and `id` = #{id}</if>
<if test="name">and `name` = #{name}</if>
<if test="email">and `email` = #{email}</if>
<if test="mobile">and `mobile` = #{mobile}</if>
<if test="status">and `status` = #{status}</if>
<if test="type">and `type` = #{type}</if>
<if test="createdFrom">AND `created_at` >= #{createdFrom}</if>
<if test="createdTo">AND `created_at` < #{createdTo}</if>
AND roles_json = "[\"BUYER\"]"
</sql>
<sql id="order">
order by id desc
</sql>
<sql id="custom_sort">
<if test="sortBy != null">
<if test="sortBy == 'id'">ORDER BY id
<include refid="custom_sort_type"/>
</if>
<if test="sortBy == 'updatedAt'">ORDER BY updated_at
<include refid="custom_sort_type"/>
</if>
</if>
</sql>
<sql id="custom_sort_type">
<if test="sortType != null">
<if test="sortType == 1">ASC</if>
<if test="sortType == 2">DESC</if>
</if>
</sql>
<insert id="create" parameterType="ShopUser" keyProperty="id" useGeneratedKeys="true">
INSERT INTO
<include refid="tb"/>
(<include refid="cols_exclude_id"/>)
VALUES
(<include refid="vals"/>)
</insert>
<select id="findById" parameterType="long" resultMap="ShopUserMap">
SELECT
<include refid="cols_all"/>
FROM
<include refid="tb"/>
WHERE id = #{id}
</select>
<select id="findByMobile" parameterType="string" resultMap="ShopUserMap">
SELECT
<include refid="cols_all"/>
FROM
<include refid="tb"/>
WHERE mobile = #{mobile}
</select>
<select id="findByMobileAndShopId" parameterType="map" resultMap="ShopUserMap">
SELECT
<include refid="cols_all"/>
FROM
<include refid="tb"/>
WHERE mobile = #{mobile} AND shop_id=#{shopId}
</select>
<select id="findByUserId" parameterType="long" resultMap="ShopUserMap" >
SELECT <include refid="cols_all" />
FROM <include refid="tb" />
WHERE user_id = #{userId}
</select>
<select id="findByIds" parameterType="list" resultMap="ShopUserMap">
select id,
<include refid="cols_exclude_id"/>
from
<include refid="tb"/>
where id in
<foreach collection="list" open="(" separator="," close=")"
item="item">
#{item}
</foreach>
<include refid="order"/>
</select>
<update id="update" parameterType="ShopUser">
UPDATE
<include refid="tb"/>
<set>
<if test="shopId != null">shop_id = #{shopId},</if>
<if test="shopName != null">shop_name = #{shopName},</if>
<if test="userId != null">user_id = #{userId},</if>
<if test="userName != null">user_name = #{userName},</if>
<if test="discount != null">discount = #{discount},</if>
<if test="mobile != null">mobile = #{mobile},</if>
<if test="extraJson != null">extra_json = #{extraJson},</if>
updated_at=now()
</set>
WHERE id = #{id}
</update>
<update id="updateShopUserDiscount" parameterType="map">
UPDATE
<include refid="tb"/>
<set>
<if test="discount != null">discount = #{discount},</if>
updated_at=now()
</set>
WHERE user_id = #{userId} AND shop_id=#{shopId}
</update>
<update id="refreshShopUserByUserId" parameterType="map">
UPDATE
<include refid="tb"/>
<set>
<if test="userName != null">user_name = #{userName},</if>
<if test="mobile != null">mobile = #{mobile},</if>
updated_at=now()
</set>
WHERE user_id = #{userId}
</update>
<delete id="delete" parameterType="long">
DELETE FROM
<include refid="tb"/>
WHERE id = #{id}
</delete>
<delete id="deleteByUserId" parameterType="long">
DELETE FROM
<include refid="tb"/>
WHERE user_id = #{userId}
</delete>
<select id="paging" parameterType="list" resultMap="ShopUserMap">
select id,
<include refid="cols_exclude_id"/>
from
<include refid="tb"/>
<include refid="queryCondition"/>
order by id desc limit #{offset},#{limit}
</select>
<select id="count" parameterType="list" resultType="long">
select count(1)
from
<include refid="tb"/>
<include refid="queryCondition"/>
</select>
</mapper>

浙公网安备 33010602011771号