Mybatis 动态表名,插入数据

时间:2021-10-27 09:26:24

Mapper 中方法:

int insert(@Param("tableName") 
String tableName,
@Param("user")
User user);

Mybatis xml 代码 :

<insert id="insert" parameterType="com.ihuaqiang.spring.bean.User">
insert into
${tableName}
(id,name,pass,sex)
values
(#{user.id,jdbcType=INTEGER},
#{user.name,jdbcType=VARCHAR},
#{user.pass,jdbcType=VARCHAR},
#{user.sex,jdbcType=INTEGER})
</insert>


parameterType可加可不加,百度搜索的方案这里加上

statementType="STATEMENT"

是会报错的.额也不几道为啥子Mybatis 动态表名,插入数据


generator生成的mapper.xml文件中,还有一种是这样的:insertSelective

insert对你注入的字段全部更新(不判断是否为Null),insertSelective会对字段进行判断再更新(如果为Null就忽略更新)

mapper中的方法是一样的,Xml是酱紫的:

<insert id="insertSelective" parameterType="com.ihuaqiang.spring.bean.User">
insert into ${tableName}
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="user.id != null">
id,
</if>
<if test="user.name != null">
name,
</if>
<if test="user.pass != null">
pass,
</if>
<if test="user.sex != null">
sex,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="user.id != null">
#{user.id,jdbcType=INTEGER},
</if>
<if test="user.name != null">
#{user.name,jdbcType=VARCHAR},
</if>
<if test="user.pass != null">
#{user.pass,jdbcType=VARCHAR},
</if>
<if test="user.sex != null">
#{user.sex,jdbcType=INTEGER},
</if>
</trim>
</insert>