一、新增Insert操作1. 普通新增① Mapper 接口java运行void add(Brand brand);参数除主键id外的所有业务字段返回值void也可返回受影响行数int② XML 映射文件xmlinsert idadd insert into tb_brand (brand_name, company_name, ordered, description, status) values (#{brandName},#{companyName},#{ordered},#{description},#{status}); /insert③ MyBatis 事务说明openSession()默认开启手动事务增删改后必须调用sqlSession.commit()手动提交openSession(true)设置为自动提交事务关闭事务管理2. 主键返回自增主键场景适用场景添加订单后需要获取订单主键id用于插入关联的订单项数据。① XML 映射文件xmlinsert idaddOrder useGeneratedKeystrue keyPropertyid insert into tb_order (payment, payment_type, status) values (#{payment},#{paymentType},#{status}); /insertuseGeneratedKeystrue开启自增主键获取keyPropertyid将数据库生成的主键值回写到实体类的id属性中② 关联操作示例xmlinsert idaddOrderItem insert into tb_order_item (goods_name, goods_price, count, order_id) values (#{goodsName},#{goodsPrice},#{count},#{orderId}); /insert执行addOrder后实体类Order的id已被赋值可直接用于addOrderItem的orderId参数二、删除Delete操作1. 单条删除按 ID 删除① Mapper 接口java运行void deleteById(int id);参数要删除的记录主键id返回值void也可返回受影响行数int② XML 映射文件xmldelete iddeleteById delete from tb_brand where id #{id} /delete2. 批量删除按 ID 数组删除① Mapper 接口java运行void deleteByIds(Param(ids) int[] ids);参数int[] ids要删除的 ID 数组Param注解用于指定参数在 Map 中的 key返回值void② MyBatis 参数封装规则MyBatis 会将数组 / 集合参数自动封装为Map默认 keyarray数组/listList 集合可通过Param(ids)自定义 key 名称提升代码可读性③ XML 映射文件foreach 标签实现xmldelete iddeleteByIds delete from tb_brand where id in foreach collectionids itemid separator, open( close) #{id} /foreach /deletecollection对应Param指定的 key无注解时写array/listitem遍历的单个元素别名separator元素间分隔符open/close包裹整个遍历结果的前后符号三、修改Update操作1. 全字段修改① Mapper 接口java运行void update(Brand brand);参数包含所有字段的实体对象含id返回值void也可返回受影响行数int② XML 映射文件xmlupdate idupdate update tb_brand set brand_name #{brandName}, company_name #{companyName}, ordered #{ordered}, description #{description}, status #{status} where id #{id}; /update特点无论字段是否为空都会强制更新所有字段2. 动态字段修改按需更新① Mapper 接口java运行void update(Brand brand);接口与全字段修改一致仅需修改 XML 映射文件② XML 映射文件if set 标签实现xmlupdate idupdate update tb_brand set if testbrandName ! null and brandName ! brand_name #{brandName}, /if if testcompanyName ! null and companyName ! company_name #{companyName}, /if if testordered ! null ordered #{ordered}, /if if testdescription ! null and description ! description #{description}, /if if teststatus ! null status #{status}, /if /set where id #{id}; /updateif标签判断字段是否非空非空才拼接更新语句set标签自动去除末尾多余的逗号避免 SQL 语法错误特点仅更新传入的非空字段适合部分字段修改的场景
MVN--06
发布时间:2026/7/12 4:34:31
一、新增Insert操作1. 普通新增① Mapper 接口java运行void add(Brand brand);参数除主键id外的所有业务字段返回值void也可返回受影响行数int② XML 映射文件xmlinsert idadd insert into tb_brand (brand_name, company_name, ordered, description, status) values (#{brandName},#{companyName},#{ordered},#{description},#{status}); /insert③ MyBatis 事务说明openSession()默认开启手动事务增删改后必须调用sqlSession.commit()手动提交openSession(true)设置为自动提交事务关闭事务管理2. 主键返回自增主键场景适用场景添加订单后需要获取订单主键id用于插入关联的订单项数据。① XML 映射文件xmlinsert idaddOrder useGeneratedKeystrue keyPropertyid insert into tb_order (payment, payment_type, status) values (#{payment},#{paymentType},#{status}); /insertuseGeneratedKeystrue开启自增主键获取keyPropertyid将数据库生成的主键值回写到实体类的id属性中② 关联操作示例xmlinsert idaddOrderItem insert into tb_order_item (goods_name, goods_price, count, order_id) values (#{goodsName},#{goodsPrice},#{count},#{orderId}); /insert执行addOrder后实体类Order的id已被赋值可直接用于addOrderItem的orderId参数二、删除Delete操作1. 单条删除按 ID 删除① Mapper 接口java运行void deleteById(int id);参数要删除的记录主键id返回值void也可返回受影响行数int② XML 映射文件xmldelete iddeleteById delete from tb_brand where id #{id} /delete2. 批量删除按 ID 数组删除① Mapper 接口java运行void deleteByIds(Param(ids) int[] ids);参数int[] ids要删除的 ID 数组Param注解用于指定参数在 Map 中的 key返回值void② MyBatis 参数封装规则MyBatis 会将数组 / 集合参数自动封装为Map默认 keyarray数组/listList 集合可通过Param(ids)自定义 key 名称提升代码可读性③ XML 映射文件foreach 标签实现xmldelete iddeleteByIds delete from tb_brand where id in foreach collectionids itemid separator, open( close) #{id} /foreach /deletecollection对应Param指定的 key无注解时写array/listitem遍历的单个元素别名separator元素间分隔符open/close包裹整个遍历结果的前后符号三、修改Update操作1. 全字段修改① Mapper 接口java运行void update(Brand brand);参数包含所有字段的实体对象含id返回值void也可返回受影响行数int② XML 映射文件xmlupdate idupdate update tb_brand set brand_name #{brandName}, company_name #{companyName}, ordered #{ordered}, description #{description}, status #{status} where id #{id}; /update特点无论字段是否为空都会强制更新所有字段2. 动态字段修改按需更新① Mapper 接口java运行void update(Brand brand);接口与全字段修改一致仅需修改 XML 映射文件② XML 映射文件if set 标签实现xmlupdate idupdate update tb_brand set if testbrandName ! null and brandName ! brand_name #{brandName}, /if if testcompanyName ! null and companyName ! company_name #{companyName}, /if if testordered ! null ordered #{ordered}, /if if testdescription ! null and description ! description #{description}, /if if teststatus ! null status #{status}, /if /set where id #{id}; /updateif标签判断字段是否非空非空才拼接更新语句set标签自动去除末尾多余的逗号避免 SQL 语法错误特点仅更新传入的非空字段适合部分字段修改的场景