Mybatis 动态insert
表结构
实体类
@Data
public class User {
private String uuid;
private String username;
private String password;
private String email;
public User(String uuid, String username, String password, String email) {
this.uuid = uuid;
this.username = username;
this.password = password;
this.email = email;
}
public User(String uuid, String username) {
this.uuid = uuid;
this.username = username;
}
public User() {
}
}
dao
@Mapper
public interface UserDao {
//动态插入
void dynamicInsert(User user);
//批量动态插入
void dynamicInsertBatch(@Param("list") List<User> list);
}
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.zxr.template.dao.UserDao">
<!--动态插入-->
<insert id="dynamicInsert" parameterType="com.zxr.template.entity.User">
insert into t_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="uuid != null and uuid != ''">
uuid,
</if>
<if test="username != null and username !=''">
username,
</if>
<if test="password != null and password !=''">
password,
</if>
<if test="email != null and email !=''">
email,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="uuid != null and uuid != ''">
#{uuid},
</if>
<if test="username != null and username !=''">
#{username},
</if>
<if test="password != null and password !=''">
#{password},
</if>
<if test="email != null and email !=''">
#{email},
</if>
</trim>
</insert>
<!--批量动态插入-->
<insert id="dynamicInsertBatch" parameterType="com.zxr.template.entity.User">
insert into t_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="list.get(0).uuid != null and list.get(0).uuid != ''">
uuid,
</if>
<if test="list.get(0).username != null and list.get(0).username !=''">
username,
</if>
<if test="list.get(0).password != null and list.get(0).password !=''">
password,
</if>
<if test="list.get(0).email != null and list.get(0).email !=''">
email,
</if>
</trim>
values
<foreach collection="list" index="index" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="item.uuid != null and item.uuid!=''">
#{item.uuid},
</if>
<if test="item.username!=null and item.username!=''">
#{item.username},
</if>
<if test="item.password!=null and item.password!=''">
#{item.password},
</if>
<if test="item.email!=null and item.email!=''">
#{item.email},
</if>
</trim>
</foreach>
</insert>
</mapper>