mybatis的批量更新实例
近来批量添加,删除,更新用的比较多,单一的删除和更新,操作无法满足企业某些业务的需求,故通过以下示例分享知识:
今天通过更新的例子来说明
演示环境为jdk8,maven环境,ssm框架
请准备好环境,数据表可直接使用
一、准备数据表
CREATE TABLE `user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `username` varchar(20) DEFAULT NULL COMMENT '用户名', `sex` varbinary(20) DEFAULT NULL COMMENT '性别', `phone` varchar(20) DEFAULT NULL COMMENT '电话', `password` varchar(20) DEFAULT NULL COMMENT '密码', `level` int(4) DEFAULT NULL COMMENT '等级', `create_time` datetime DEFAULT NULL COMMENT '用户创建时间', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', `logo` int(2) DEFAULT '0' COMMENT '登录标识', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
二、准备JavaBean
package cn.blog.entity; import java.util.Date; import java.util.List; /** * 用户实体 * @author youcong * */ public class User { /** 用户ID*/ private Integer userId; /** 用户名*/ private String username; /** 电话*/ private String phone; /** 密码*/ private String password; /** 等级*/ private Integer level; /** 用户创建时间*/ private String createTime; /** 性别*/ private String sex; /** * 邮箱 */ private String email; /** * 登录标识 * @return */ private Integer logo; public Integer getLogo() { return logo; } public void setLogo(Integer logo) { this.logo = logo; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username == null ? null : username.trim(); } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone == null ? null : phone.trim(); } public String getPassword() { return password; } public void setPassword(String password) { this.password = password == null ? null : password.trim(); } public Integer getLevel() { return level; } public void setLevel(Integer level) { this.level = level; } public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
三、编写对应的Mapper和xml
package cn.blog.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import cn.blog.entity.User; /** * 用户接口 * @author 挑战者 * */ public interface UserMapper { /** * 批量修改 */ public void udpateUserLogoStatu(@Param ("users") List<User> users); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <? 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="cn.blog.mapper.UserMapper" > < resultMap id="BaseResultMap" type="User" > < id column="user_id" property="userId" jdbcType="INTEGER" /> < result column="username" property="username" jdbcType="VARCHAR" /> < result column="phone" property="phone" jdbcType="VARCHAR" /> < result column="password" property="password" jdbcType="VARCHAR" /> < result column="level" property="level" jdbcType="INTEGER" /> < result column="create_time" property="createTime" jdbcType="TIMESTAMP" /> < result column="email" property="email" jdbcType="VARCHAR" /> < result column="logo" property="logo" jdbcType="INTEGER"/> </ resultMap > < update id="udpateUserLogoStatu" parameterType="java.util.List"> < foreach collection="users" item="user" index="index" separator=";"> update `user` < set > logo = 1 </ set > where logo = #{user.logo} </ foreach > </ update > </ mapper > |
四、junit单元测试
package cn.blog.test; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import cn.blog.entity.User; import cn.blog.mapper.UserMapper; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:application-config.xml") public class BlogTest { @Autowired private UserMapper userMapper; @Test public void testName() throws Exception { int logo[] = new int[] {0}; for (int i = 0; i < logo.length; i++) { User user = new User(); user.setLogo(logo[i]); List<User> users = new ArrayList<User>(); users.add(user); userMapper.udpateUserLogoStatu(users); } } }
分类:
MyBatis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述