zoukankan      html  css  js  c++  java
  • mybatis篇

    1.接口和xml如何映射:xml里写接口的全路径名为namespace(命名空间),每个sql标签的id为方法名,进行映射

    2.resultType属性:映射成一个pojo类(数据库字段和类中的属性完全匹配,如果不一致,但是数据库是下划线,java类是驼峰命名,则可以通过配置一个属性为true来进行自动映射转换)

    3.resultMap属性(标签):

    使用场景:自定义转换规则,数据库字段名和java类属性不一致时,自定义转换规则;

                    多表联查时使用:assocate:一对一    collection:一对多

    在一个标签中,要么使用resultType,要么使用resultMap,两者只能用一个.

    4.@Param注解:mybatis方法默认只支持一个参数,当想传入多个参数时,要么封装成一个pojo当参数,要么加@Param来写多个注解。@Param的作用是给多个参数起别名,在xml中用别名映射参数。一些特定的场景,如在动态sql中传参,或者xml中使用$传参,方法中的参数也都要加@Param注解。

    5.#{}:进行预编译,自动加单引号,不会发生sql注入,一般都是用#{}

       ${}:不进行预编译,是什么就传什么,容易发生sql注入。

    6.<where>标签:判断where里的条件是否满足加where的条件,如果有,自动加where+条件,如果没有,则where自动取消,不加where。

    7.mybatis如何进行批量操作:用foreach标签进行批量操作;使用mybatis的批量执行器进行批量操作。多次操作在一个事物里面完成。

    8.foreach标签的应用场景:sql中有in关键字时,in后面的值,可以用foreach标签进行循环拼接,这样的话,在代码参数中,就可以传入list或数组即可。

    9,mybatis-generator 逆向工程:

    10.mybatis缓存:

    一级缓存:默认开启,生命周期是sqlSession级别,在同一个sqlSession中(同一次连接),如果执行的方法,传入的参数都一致,则第二次走一级缓存。如果在一个sqlSession中,存在了增删改操作,则不再走缓存,会清空缓存。一级缓存不会产生脏读。因为只存在于一个线程中,操作数据的时候,会对数据加锁,所以不会发生脏读。

    二级缓存:sqlSessionFactory级别缓存。二级缓存是以namespace为单位的。不同的namespace下的操作互补影响。不同namespace下的方法,有各自的缓存,不会影响。二级缓存容易出现脏读。数据不能及时更新到缓存中。所以用可控的redis做缓存。

  • 相关阅读:
    【转载】LTE中RB、RE、CP、REG、CCE、子载波
    LTE中,DCI和UCI为什么要定义那么多格式
    LTE中的PDCCH介绍
    ARQ
    (转)MYSQL远程登录权限设置
    (转)忘记wamp-mysql数据库root用户密码重置方法
    phpwind部署问题
    在aliyun遇到一些问题
    (转)PHP5使用cookie时报错 cannot modify header information
    (转)WAMP多站点配置
  • 原文地址:https://www.cnblogs.com/hongyuansu/p/14003057.html
Copyright © 2011-2022 走看看