在 Mybatis 中,update 语句可以使用 set 标签动态更新列。set 标签可以为 SQL 语句动态的添加 set 关键字,剔除追加到条件末尾多余的逗号。
示例
要求:根据 id 修改人的名称(本节示例基于《Mybatis简单示例程序》一节的代码实现)。
PersonMapper.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="net.jhelp.mybatis.learning.orm.mapper.PersonMapper" >
  <resultMap id="BaseResultMap" type="net.jhelp.mybatis.learning.orm.entity.Person" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="age" property="age" jdbcType="INTEGER" />
    <result column="school" property="school" jdbcType="VARCHAR" />
    <result column="province" property="province" jdbcType="VARCHAR" />
    <result column="created_time" property="createdTime" jdbcType="TIMESTAMP" />
    <result column="creator" property="creator" jdbcType="VARCHAR" />
    <result column="revised_time" property="revisedTime" jdbcType="TIMESTAMP" />
    <result column="reviser" property="reviser" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    id, name, age, school, province, created_time, creator, revised_time, reviser
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from person
    where id = #{id,jdbcType=INTEGER}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from person
    where id = #{id,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="net.jhelp.mybatis.learning.orm.entity.Person" >
    insert into person (id, name, age, 
      school, province, created_time, 
      creator, revised_time, reviser
      )
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, 
      #{school,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR}, #{createdTime,jdbcType=TIMESTAMP}, 
      #{creator,jdbcType=VARCHAR}, #{revisedTime,jdbcType=TIMESTAMP}, #{reviser,jdbcType=VARCHAR}
      )
  </insert>
</mapper>PersonMapper 类中方法如下。
import net.jhelp.mybatis.learning.orm.entity.Person;
public interface PersonMapper {
    int deleteByPrimaryKey(Integer id);
    int insert(Person record);
    int insertSelective(Person record);
    Person selectByPrimaryKey(Integer id);
    int updateByPrimaryKeySelective(Person record);
    int updateByPrimaryKey(Person record);
}
测试类代码如下。
package net.jhelp.mybatis.learning.test;
import lombok.extern.slf4j.Slf4j;
import net.jhelp.mybatis.learning.orm.entity.Person;
import net.jhelp.mybatis.learning.orm.mapper.PersonMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
 * 网址:https://www.jhelpe.net
 * <p>
 * author : kame
 * date : 10/15/23 4:52 PM
 */
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class MybatisTestCase {
    private  PersonMapper personMapper;
    @Autowired
    public void setPersonMapper(PersonMapper personMapper){
        this.personMapper = personMapper;
    }
    @Test
    public void test(){
        //创建一个人
        Person person = new Person();
        person.setAge(39);
        person.setName("jack");
        person.setSchool("中山大学");
        person.setCreatedTime(new java.util.Date());
        person.setProvince("广东");
        //保存
        personMapper.insertSelective(person);
        System.out.println("保存的用户ID=" + person.getId());
        Person person2 = personMapper.selectByPrimaryKey(person.getId());
        System.out.println("保存的人的名字为:" + person2.getName());
    }
}
输出结果如下。
2023-10-15T21:45:37.980+08:00 DEBUG 11238 --- [           main] n.j.m.l.o.m.P.insertSelective            : ==>  Preparing: insert into person ( name, age, school, province, created_time ) values ( ?, ?, ?, ?, ? )
2023-10-15T21:45:38.022+08:00 DEBUG 11238 --- [           main] n.j.m.l.o.m.P.insertSelective            : ==> Parameters: jack(String), 39(Integer), 中山大学(String), 广东(String), 2023-10-15 21:45:37.567(Timestamp)
2023-10-15T21:45:38.096+08:00 DEBUG 11238 --- [           main] n.j.m.l.o.m.P.insertSelective            : <==    Updates: 1
保存的用户ID=6
2023-10-15T21:45:38.105+08:00 DEBUG 11238 --- [           main] n.j.m.l.o.m.P.selectByPrimaryKey         : ==>  Preparing: select id, name, age, school, province, created_time, creator, revised_time, reviser from person where id = ?
2023-10-15T21:45:38.106+08:00 DEBUG 11238 --- [           main] n.j.m.l.o.m.P.selectByPrimaryKey         : ==> Parameters: 6(Integer)
2023-10-15T21:45:38.119+08:00 DEBUG 11238 --- [           main] n.j.m.l.o.m.P.selectByPrimaryKey         : <==      Total: 1
保存的人的名字为:jack
                            郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
                        
                        
                            本文链接:https://www.jhelp.net/p/RpXsAXW4Bi5AwVcZ (转载请保留)。
                        
                    本站推荐
- 
                                    
                                    1071
 - 
                                    
                                    1064
 - 
                                    
                                    995
 - 
                                    
                                    990
 - 
                                    
                                    989
 
文章目录
                        
                    