mybatis总结

1. mybatis 获取返回自增长(auto_increment)ID

<insert id="insert" parameterType="java.util.HashMap" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
        <selectKey resultType ="java.lang.Integer" keyProperty= "id" order= "AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey >
        INSERT INTO table_name(column1,column2,gmt_create)
        VALUES
        (
        #{value1},
        #{value2},
        CURRENT_TIMESTAMP
        )
    </insert>

注意:
1. insert 返回的是影响的记录的行数
2. 自增长Id在插入的实体类对象中的Id


2. mybatis 动态传递表名和批量插入

 <insert id="insert" parameterType="java.util.HashMap" useGeneratedKeys="true" keyProperty="id" statementType="STATEMENT">
        <selectKey resultType ="java.lang.Integer" keyProperty= "id" order= "AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey >
        INSERT INTO
        <if test="table_index>=10">tableName_${table_index}</if><if test="table_index &lt; 10">tableName__0${table_index}</if>
        (column1,column2,column3,column4,gmt_create)
        VALUES
        <foreach collection ="ListName" item="item" index= "index" separator =",">
            (
            ${item.value1},
            ${item.value2},
            ${item.value3},
            ${item.value4},
            CURRENT_TIMESTAMP
            )
        </foreach>
    </insert>

注意要点:
1. parameterType 类型填java.util.Map,因为既要动态表名,又要批量插入,所以使用map,网上批量插入的例子参数都是list
2. 显式地生命statementType=”STATEMENT”。
3. 所有之前#{xxx}的东西都换成 $ {}符号。同时字符串类型的数据(插入数据库的字段)要自己加单引号,要不然语法会报错,这里注意#和$的区别:

  1. #{}将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号
  2. ${}将传入的数据直接显示生成在sql中
  3. $方式一般用于传入数据库对象,例如传入表名.
  4. #方式能够很大程度防止sql注入。$方式无法防止Sql注入。
  5. 一般能用#的就别用$.

参考链接:http://blog.csdn.net/tracymkgld/article/details/50905743

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值