美文网首页
mybatis进阶

mybatis进阶

作者: 扎Zn了老Fe | 来源:发表于2019-06-16 20:21 被阅读0次

1. insert返回主键id

添加useGeneratedKeys,keyProperty即可。

KeyProperty:(仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

UseGeneratedKeys:仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段),默认值:false。

  <insert id="insert" parameterType="com.meituan.nibscp.domain.product.service.dal.po.PriceItemPO"
            useGeneratedKeys="true" keyProperty="id">
        INSERT INTO price_item
        (<include refid="base_insert_column"/>)
        VALUES
        (<include refid="base_insert_property"/>)
    </insert>

2. $和#的区别

#{}是预编译处理,${}是字符串替换。
(1)mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。
(2)mybatis在处理{}时,就是把{}替换成变量的值。
(3)使用#{}可以有效的防止SQL注入,提高系统安全性。原因在于:预编译机制。预编译完成之后,SQL的结构已经固定,即便用户输入非法参数,也不会对SQL的结构产生影响,从而避免了潜在的安全风险。
(4)预编译是提前对SQL语句进行预编译,而其后注入的参数将不会再进行SQL编译。我们知道,SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行操作。而预编译机制则可以很好的防止SQL注入。

相关文章

  • Mybatis进阶

    基本知识 resultMap constructor–实例化的时候通过构造器将结果集注入到类中oidArg– ID...

  • MyBatis进阶

    对象之间的关系: 关联关系:A对象依赖B对象,并且把B对象作为A对象的一个属性,则A和B是依赖关系. ** 按照多...

  • mybatis进阶

    1. insert返回主键id 添加useGeneratedKeys,keyProperty即可。 KeyProp...

  • Mybatis进阶

    一、Mybatis 参数处理 1.1 单参 单参数时,Mybatis会直接取出参数值给Mapper文件赋值,...

  • 【Mybatis】 02 - Mybatis 进阶

    1. 知识回顾 1.1 回顾自定义Mybatis流程分析 1.2 回顾Mybatis环境搭建-以及实现查询所有的功...

  • SpringBoot入门建站全系列(四)Mybatis使用进阶篇

    SpringBoot入门建站全系列(四)Mybatis使用进阶篇:动态SQL与分页 上一篇介绍了Mybatis的配...

  • 精雕细琢!阿里大师53天悉心打磨出来的MyBatis+设计模式架

    全文内容目录一览 Java设计模式实践指南(字节跳动版) MyBatis入门到进阶(含面试题解) MyBatis底...

  • 自己实现一个缓存

    基本框架 提高 进阶:经典责任链及变种模式 mybatis缓存的变种责任链

  • Mybatis进阶教程

    前言 接着上一篇Mybatis入门继续,上一篇主要演示了Mybatis的基本操作,对数据库的增删改查,但是在实际项...

  • MyBatis 进阶-ResultMap

    ResultMap 是 MyBatis 中最重要最强大的元素 可以实现复杂查询结果到复杂对象关联的关系转化复杂 J...

网友评论

      本文标题:mybatis进阶

      本文链接:https://www.haomeiwen.com/subject/xrtnfctx.html