zoukankan      html  css  js  c++  java
  • 【Mybatis】Bonus02 补充


    关于主键生成问题

    Mybatis的主键生成是基于JDBC的使用主键【getGeneratedKeys()】方法

    也就是说,必须要JDBC驱动的支持才行

        @Test
        public void junitTest() throws SQLException {
            Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByOriginalJdbc();、
    PreparedStatement preparedStatement
    = connectionByOriginalJdbc.prepareStatement("");
    ResultSet generatedKeys
    = preparedStatement.getGeneratedKeys(); }

    useGeneratedKeys 表示使用数据库生成的主键,

    keyProperty 表示绑定数据表的主键返回给实体类的哪个字段

    在之前的插入SQL中并不需要主键生成功能就能完成主键自增生成,

    看来是JDBC自动生成的【如果开启就像官方说的一样,是强制生成的】


    实现主键生成的第二种方式:

    使用<SelectKey> 标签

    SELECT last_insert_id 表示查询最后一次插入的id

    如果在SQL执行前查询,就返回最后一次插入的记录的id

    然后我们的插入SQL就会按这个查询的id插入,这样插入是有问题的,

    所以要选择AFTER,在执行插入后返回主键,再生成

    对应的,使用注解实现的方式


    关于getMapper底层实现原理

    这是一个查询的SQL

    先获取会话实例

    然后从会话中获取Mapper实现类

    调用查询SQL,完成后释放资源

    通过调试查看源码

    其实也是使用动态代理完成的

    根据command的类型来处理,

    一共四个Case,也正好就是我们Mapper的4个SQL标签

    而在增删改3个,都是直接注入SQL即可,因为返回只有修改的记录结果数

    SELECT反而更为复杂

    需要根据查询的结果要求进行处理

    摘要自: https://www.bilibili.com/video/BV1dV411o7bA?p=11


    关于参数占位符

    在多个普通参数注入的情况,我们可以使用这种占位符表示,

    也就是不通过名称标识注入

    如果是多个实体类类型的参数。。。


     关于驼峰命名匹配

    Java实体类声明的映射字段是以驼峰命名的,

    例如:

      userId,userName,userPassword

    但是数据库的字段是不区分大小写的,尤其是Oracle数据库,会直接全大写

    一般设置的字段会是这样,

    例如:

      user_id,user_name,user_password

    或者Oracle全大写的这样

      USER_ID,USER_NAME,USER_PASSWORD

    Mybatis的设置项中可以开启一个驼峰命名映射,帮助这个字段进行匹配

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    如果你打算完全一致的声明ORM字段列表示,请不要设置驼峰匹配!!!

    这会导致Mybatis无法找到数据表的字段【显示一切正常】

    你会根本找不到什么问题,所有配置完全一致,结果就是返回null


    关于模糊查询Like 更好的安全写法


  • 相关阅读:
    巴洛克式和哥特式的区别
    推荐阅读书籍,是时候再行动起来了。
    AtCoder ABC 159F Knapsack for All Segments
    AtCoder ABC 159E Dividing Chocolate
    AtCoder ABC 158F Removing Robots
    AtCoder ABC 158E Divisible Substring
    AtCoder ABC 157F Yakiniku Optimization Problem
    AtCoder ABC 157E Simple String Queries
    AtCoder ABC 157D Friend Suggestions
    AtCoder ABC 156F Modularness
  • 原文地址:https://www.cnblogs.com/mindzone/p/12840751.html
Copyright © 2011-2022 走看看