Mybatis增删改查mapper文件写法详解

发布时间 - 2026-01-10 23:20:54    点击率:

  1. 插入

<mapper namespace="需要实现接口的全类名">
 <insert id="需要实现的接口里的方法名" parameterType="方法参数类型,如果是对象要写全类名">
  INSERT sql命令(命令里通过#{}获取对象属性)
  <!--注意属性名区分大小写 -->
 </insert>
<mapper>

EG:

<mapper namespace="com.mlj.dao.PersonDao">
 <insert id="insertPerson" parameterType="com.mlj.entity.Prac_Person">
  INSERT INTO PRAC_PERSON(p_NAME,P_PASSWORD) VALUES(#{name},#{password})
 </insert>
</mapper>

2. 查询

<select id="方法名" parameterType="方法参数类型" resultType="方法返回值类型,全类名">
 SELECT 表里字段名 AS 结果字段名 FROM 表名 WHERE 条件
 <!--注意:结果字段名与属性名保持一致,区分大小写-->
</select>

EG:

<resultMap type="Address" id="address">
 <result column="A_PERSON" property="personId"/>
 <result column="A_ADDRESS" property="address"/>
 <result column="A_NUMBER" property="number"/></resultMap>
 <select id="selectAddressByPersonId"
 parameterType="java.lang.String" resultMap="address">
   SELECT * FROM PRAC_ADDRESS LEFT JOIN PRAC_PERSON ON A_PERSON=#{personId} AND PRAC_ADDRESS.A_PERSON=PRAC_PERSON.P_ID
 </select>

此处先配置resultMapp,使表列名与属性名一致。

3.修改

与前面插入除了sql语句基本一致,直接贴代码

<update id="updatePersonInformation" parameterType="com.mlj.entity.Prac_Person" > 
  UPDATE PRAC_PERSON SET P_NAME=#{name},P_PASSWORD=#{password} WHERE P_ID=#{id}
  <!-- 属性字段名区分大小写 -->
</update>

4.删除

与前面插入除了sql语句基本一致,直接贴代码

<delete id="deletePerson" parameterType="java.lang.Integer">
  DELETE FROM PRAC_PERSON WHERE P_ID=#{id}
</delete>

下面看下mybatis的mapper配置文件的一般写法

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="com.hzcominfo.voucher.CommodityCategoryManager">
<cache-ref namespace="com.hzcominfo.dataggr.cloud" />
<insert id="insertCommodityCategoryManager" parameterType="com.hzcominfo.voucher.mapper.CommodityCategoryManager" keyProperty="id" >
INSERT INTO COMMODITY_CATEGORY_MANAGER (
<include refid="fields" />
) VALUES (
<include refid="values" />
)
</insert>
<update id="updateCommodityCategoryManager" parameterType="com.hzcominfo.voucher.mapper.CommodityCategoryManagerKey">
UPDATE COMMODITY_CATEGORY_MANAGER 
<include refid="set" />
<include refid="where" />
</update>
<update id="deleteCommodityCategoryManager" parameterType="com.hzcominfo.voucher.mapper.CommodityCategoryManagerKey">
DELETE FROM COMMODITY_CATEGORY_MANAGER <include refid="where" />
</update>
<select id="selectCommodityCategoryManager" parameterType="String"
resultType="com.hzcominfo.voucher.mapper.CommodityCategoryManager">
SELECT * FROM COMMODITY_CATEGORY_MANAGER <include refid="where" />
</select>
<select id="selectCommodityCategoryManagerByCriteria" parameterType="net.butfly.albacore.dbo.criteria.Criteria"
resultType="com.hzcominfo.voucher.mapper.CommodityCategoryManagerKey">
SELECT CATEGORY_ID, USER_ID FROM COMMODITY_CATEGORY_MANAGER <include refid="where" />
</select>
<select id="countCommodityCategoryManagerByCriteria" parameterType="net.butfly.albacore.dbo.criteria.Criteria"
resultType="long">
SELECT count(*) FROM COMMODITY_CATEGORY_MANAGER <include refid="where" />
</select> 
<sql id="fields">
<if test="categoryId!=null">CATEGORY_ID</if>
<if test="userId!=null">,USER_ID</if>
</sql>
<sql id="values">
<if test="categoryId!=null">#{categoryId}</if>
<if test="userId!=null">,#{userId}</if>
</sql>
<sql id="set">
<set>
<trim prefix="" prefixOverrides=",">
<if test="categoryId!=null">,CATEGORY_ID=#{categoryId}</if>
<if test="userId!=null">,USER_ID=#{userId}</if>
</trim>
</set>
</sql>
<sql id="where">
<where>
 <trim prefix="" prefixOverrides="and|or" >
<if test="categoryId!=null">AND CATEGORY_ID=#{categoryId}</if>
<if test="userId!=null">AND USER_ID=#{userId}</if>
</trim>
</where>
</sql>
</mapper>

以上所述是小编给大家介绍的Mybatis增删改查mapper文件写法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# mybatis  # mapper写法  # 详解Mybatis中万能的Map和模糊查询写法  # MyBatis实现模糊查询的几种方式  # mybatis 模糊查询的实现方法  # MyBatis的模糊查询mapper.xml的写法讲解  # 字段名  # 小编  # 在此  # 给大家  # 所述  # 给我留言  # 配置文件  # 要写  # 感谢大家  # 返回值  # 疑问请  # 有任何  # address  # column  # result  # A_PERSON  # property  # resultType  # select 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 使用spring连接及操作mongodb3.0实例  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  利用python获取某年中每个月的第一天和最后一天  昵图网官网入口 昵图网素材平台官方入口  nginx修改上传文件大小限制的方法  如何彻底卸载建站之星软件?  如何用PHP快速搭建高效网站?分步指南  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  如何自定义建站之星模板颜色并下载新样式?  微信小程序 input输入框控件详解及实例(多种示例)  Java遍历集合的三种方式  免费视频制作网站,更新又快又好的免费电影网站?  图册素材网站设计制作软件,图册的导出方式有几种?  香港服务器选型指南:免备案配置与高效建站方案解析  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel如何使用Collections进行数据处理?(实用方法示例)  原生JS实现图片轮播切换效果  Python正则表达式进阶教程_复杂匹配与分组替换解析  如何在Windows服务器上快速搭建网站?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何挑选最适合建站的高性能VPS主机?  如何实现javascript表单验证_正则表达式有哪些实用技巧  利用vue写todolist单页应用  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel怎么判断请求类型_Laravel Request isMethod用法  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  微信公众帐号开发教程之图文消息全攻略  如何快速生成可下载的建站源码工具?  原生JS获取元素集合的子元素宽度实例  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  西安专业网站制作公司有哪些,陕西省建行官方网站?  Python文件异常处理策略_健壮性说明【指导】  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  海南网站制作公司有哪些,海口网是哪家的?  如何在IIS中新建站点并解决端口绑定冲突?  如何利用DOS批处理实现定时关机操作详解  html如何与html链接_实现多个HTML页面互相链接【互相】  Python面向对象测试方法_mock解析【教程】  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】