Mybatis

  1、insert返回主键id

    自增主键:

    方法一:通过设置useGeneratedKeys,keyProperty参数,keyProperty表示将获取到的主键值id返回到bean Employee中某个字段(字段名称必须与“id”一致)。

<insert id="addEmp" parameterType="com.mybatis.domain.Employee"
    useGeneratedKeys="true" keyProperty="id">
    insert into tbl_employee(last_name,gender,email) values(#{lastName},#{gender},#{email})
</insert>

    方法二:通过设置<selectKey>标签返回,order参数After代表insert执行之后返回主键id,before代表insert执行之后返回主键id。

<insert id="addEmp" parameterType="com.mybatis.domain.Employee">
    <selectKey keyProperty="id" order="AFTER" resultType="Integer">
        SELECT LAST_INSERT_ID()
    </selectKey>

    insert into tbl_employee(last_name,gender,email)
    values(#{lastName},#{gender},#{email})
</insert>

    非自增主键

    获取uuid为主键的值:

<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">  
    <selectKey keyProperty="id" order="BEFORE" resultType="Integer">  
        SELECT uuid()     
    </selectKey>  

    insert into user(id,username,birthday,sex,address)
    values(#{id},#{username},#{birthday},#{sex},#{address})  
</insert>

    获取列的下一个值:

<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">  
    <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">  
            SELECT 序列名.nextval()  
    </selectKey>  
    insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address})  
</insert>

  2、mybatis  ${} 防sql注入

    #{}是经过预编译的(),是安全的;打印sql如下

    select id, username, password, role from user where username= ? and password=?

    当username传入 1,password传入为 “zz;drop table user;” 时执行的sql为:

    select id, username, password, role from user where username= “1” and password=“zz;drop table user;”

    drop table user 语句不会再编译。

    ${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。

    当username传入 1,password传入为 “zz;drop table user;” 时执行的sql为:

    select id, username, password, role from user where username= 1 and password=zz;drop table user;

    drop table user 语句会再编译,将表user删除。

原文地址:https://www.cnblogs.com/BestWishesZJ/p/10471534.html