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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律