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>