Mybatis 动态表名,插入数据

来源:互联网 发布:软件研发部工作流程 编辑:程序博客网 时间:2024/05/19 18:38

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>


0 0