Spring: MyBatis

 

@Mapper,最终 Mybatis 会有一个拦截器,会自动的把 @Mapper 注解的接口生成动态代理类
当然,前提是,映射器(Mapper.xml)必须满足动态代理的条件:
1.namespace与接口的全限定类名相同
2.id名与接口中方法名一致

 

 

<?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="us.transcode.thymeleaf.dao.EmployeeDao">
  <!--插入一条记录-->
  <insert id="insertOne" parameterType="Employee" keyProperty="id" useGeneratedKeys="true">
    INSERT INTO thymeleaf.employee
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id!=null">
        id,
      </if>
      <if test="username!=null and username!=''">
        username,
      </if>
      <if test="birthday!=null">
        birthday,
      </if>
      <if test="salary!=null">
        salary,
      </if>
      <if test="photo!=null and photo!=''">
        photo,
      </if>
    </trim>
    VALUES
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id!=null">
        "${id}",
      </if>
      <if test="username!=null and username!=''">
        #{username},
      </if>
      <if test="birthday!=null">
        #{birthday},
      </if>
      <if test="salary!=null">
        #{salary},
      </if>
      <if test="photo!=null and photo!=''">
        #{photo},
      </if>
    </trim>
  </insert>

  <!--通过Id查询-->
  <select id="selectOneById" parameterType="Integer" resultType="Employee">
    SELECT id, username, birthday, salary, photo FROM thymeleaf.employee WHERE id = #{id}
  </select>

  <!--查询所有-->
  <select id="selectAll" resultType="Employee">
    SELECT id, username, birthday, salary, photo FROM thymeleaf.employee
  </select>

  <!--通过set动态更新-->
  <update id="updateById" parameterType="Employee">
    UPDATE thymeleaf.employee
    <set>
      <if test="username!=null and username!=''">
        username=#{username},
      </if>
      <if test="birthday!=null">
        birthday=#{birthday},
      </if>
      <if test="salary!=null">
        salary=#{salary},
      </if>
      <if test="photo!=null and photo!=''">
        photo=#{photo},
      </if>
    </set>
    WHERE id=#{id}
  </update>

  <!--通过Id删除-->
  <delete id="deleteOneById" parameterType="Integer">
    DELETE FROM thymeleaf.employee WHERE id = #{id}
  </delete>
</mapper>

 

posted @ 2022-04-28 22:24  ascertain  阅读(34)  评论(0编辑  收藏  举报