mybatis的批量更新实例-阿里云开发者社区

开发者社区> youcongtech> 正文

mybatis的批量更新实例

简介: 近来批量添加,删除,更新用的比较多,单一的删除和更新,操作无法满足企业某些业务的需求,故通过以下示例分享知识: 今天通过更新的例子来说明 演示环境为jdk8,maven环境,ssm框架 请准备好环境,数据表可直接使用 一、准备数据表 CREATE TABLE `user` ( `user_id...
+关注继续查看

近来批量添加,删除,更新用的比较多,单一的删除和更新,操作无法满足企业某些业务的需求,故通过以下示例分享知识:

今天通过更新的例子来说明

演示环境为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);
    
    
}
<?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);
        }
        
    
    }


}

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4009 0
Mybatis3.x 遇到的问题整合[持续更新]
在映射文件中写了这样的一条sql select * from user id = #{id} 这条sql运行后会抛出一个There is no getter for property named "id" in "class java.
945 0
Ecs实例名称及主机名称支持批量连续命名
实例批量命名、主机批量命名
2732 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3956 0
运维编排系列场景-----批量释放实例
应用场景 因某些原因临时创建一些实例,使用完成后无需在继续保留这些实例,因此需要批量释放实例。或某些特殊的原因需要批量释放实例。 解决方案 模版功能:功能一:只要输入实例就可以批量释放所有的实例,释放实例时可以选择是否释放状态为Running的实例。
1923 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5676 0
迁云案例集锦(一)500台服务器批量迁云实战
1.前言         将线下服务器系统整体搬迁上云是上云客户的一个常见需求。对于1-10台少量级服务器的迁移需求有很多上云方案可以应对,然而上百台量级服务器的迁移上云就是一个没那么简单的工程问题。
2490 0
使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常
使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常 问题描述 在使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常如下:org.
1645 0
+关注
youcongtech
热爱生活,热爱编程,乐于分享,善于总结。
202
文章
5
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载