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"
是会报错的.额也不几道为啥子
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>