zoukankan      html  css  js  c++  java
  • 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删除。

  • 相关阅读:
    jQuery插件 -- Form表单插件jquery.form.js
    Ajax发送GET、POST请求和响应XML数据案例
    Ajax知识点复习
    Tomcat配置连接池的java实现
    dbcp数据库连接池的java实现
    C3P0数据库连接池的java实现
    推荐几款基于Bootstrap的响应式后台管理模板
    Java复习第四天
    Java复习第三天
    Java复习第二天
  • 原文地址:https://www.cnblogs.com/BestWishesZJ/p/10471534.html
Copyright © 2011-2022 走看看