Mybatis 动态表名,插入数据

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>


你可能感兴趣的:(JAVA,WEB)