Mybatis
文章平均质量分 86
Mybatis是一个基于Java的持久层框架,包括SQL Maps和Data Access Objects(DAOs)
https://mybatis.org/mybatis-3/
https://www.zhihu.com/question/50729231
七海健人
打工战士,闲暇之余把自己的学习和总结记录下,也希望写的东西能帮助到你
展开
-
Mybatis——拦截器Interceptor
本篇介绍Mybatis拦截器/插件相关知识,包括相关的类及作用、拦截器有哪几种、拦截器可以在Mybatis的执行过程中的哪些节点起作用、拦截器如何使用、相关的API,最后附上代码示例。原创 2022-05-08 18:34:03 · 36945 阅读 · 5 评论 -
Mybatis——执行流程及关键代码走读
由于做数据脱敏时,其中一个方案为使用Mybatis Interceptor,因此本篇介绍下Mybatis的执行流程,看下有哪些核心的类和方法,以及拦截器是如何切入SQL的执行流程的;原创 2022-04-27 16:00:18 · 1876 阅读 · 0 评论 -
Mybatis——类型处理器TypeHandler
在日常开发中使用mybatis时,实体的每个属性与数据库表的列一一对应,这些类型往往都是基本类型的包装类或时间类型Date;你可能会思考一个问题:当我们在自定义了某个枚举类型来对应数据库中的某个列(如int、tinyint类型)时,能否让mybatis知道如何做枚举与数据库类型的映射关系,从而不需要我们在代码中手动的做二者属性值的转换?MyBatis还是为我们提供了入口——TypeHandler类型处理器;原创 2022-05-17 13:46:47 · 3737 阅读 · 0 评论 -
编码技巧——数据加密(二)Mybatis拦截器
上一篇《数据加密(一)ShardingSphere》介绍了基于ShardingSphere的数据加密方案,本篇介绍基于Mybatis的加解密插件的原理及实现,以及遇到的困难;原创 2022-05-06 09:12:00 · 3891 阅读 · 0 评论 -
编码技巧——数据加密(一)ShardingSphere
接到公司合规部门的指示,应工信部整改文件,限制各大互联网公司对用户隐私数据的收集;对服务端的影响就是,以前存储的用户隐私信息如用户安卓设备ID、用户姓名、手机号、联系方式、邮箱等信息,需要加密存储和传输;因此——我们需要对线上和历史的DB中的涉及用户敏感信息的数据进行存储加密,读取时进行解密;个人是执行此次任务的服务端Leader,本篇介绍几种方案选型及各自优劣;原创 2022-04-26 09:34:25 · 5538 阅读 · 4 评论 -
编码技巧——Mybatis输出SQL日志
在开发环境调试代码,往往需要打印执行的SQL语句来判断mybatis的SQL语句是否符合预期,尤其是我们的SQL语句使用了较多的标签时,只有真正的执行到了mybatis的标签解析器后,才能生成最终的SQL语句;当遇到SQL语句看似解析正常但是执行的时候却报错,在这个时候如果mybatis本身的SQL日志没有打印,将会是非常头疼的。本篇介绍几种获取最终执行的SQL语句的方法;原创 2022-04-25 16:06:30 · 11559 阅读 · 1 评论 -
《Mybatis入门到精通》——3.动态SQL&多表映射
Day_03连接池、动态SQL;连接池(1)连接池:在实际开发中都会使用连接池因为它可以减少我们获取连接所消耗的时间(2)mybatis中的连接池:mybatis连接池提供了3种配置方式:配置的位置:主配置文件SqlMapConfig.xml中的dataSource标签,type属性就是表示采用何种连接池方式。type属性的值,有3种:POOLED:采用传统的javax.sql.DataSource规范中的连接池,mybatis中有针对规范的实现 UNPOOLED:采用原创 2022-03-25 13:05:44 · 1147 阅读 · 0 评论 -
《Mybatis入门到精通》——6.代码生成器
Day_07Mybatis代码生成器;通过配置,根据数据库表结构自动生成表实体类DAO、接口IDAO、对应的mapper.xml、Example;(会用即可,主要是3步:配置pom.xml;配置generator.xml;运行生成代码;)(1) 新建Maven工程,在resource下新建一个generator的配置文件;包括:本地JDBC驱动位置; 生成的方式(Mybatis3 Mybatis3Simple); JDBC数据库的配置; 生成的实体类DAO、接口IDAO、对应原创 2022-03-25 13:21:44 · 435 阅读 · 0 评论 -
《Mybatis入门到精通》——5.基于注解的CRUD
Day_06Mybatis注解的用法;不推荐使用;与XML类似,不再XML中写SQL,改成在接口的方法的注解里写SQL;用法类似;1. 不使用XML而是使用@注解在IDAO的方法上面,定义SQL语句目录结构没有IDAO接口的XML2. 定义CRUD方法IUserDao接口/** * @author A * User的持久层接口 *///开启二级缓存 @CacheNamespace(blocking = true)@CacheNamespace(blocking原创 2022-03-25 13:11:38 · 137 阅读 · 0 评论 -
《Mybatis入门到精通》——4.延迟加载&缓存配置
Day_05延迟加载;多表查询,持有另一个表的实体的集合,不取集合的时候就不回去查关联的那一张表;需要在Config.xml、IDAO.xml分别配置;缓存;(默认)一级缓存SQLSession(close/commit更新、删除会清空缓存);二级缓存SessionFactory,多个SQLSession共用,需要在Config.xml、IDAO.xml分别配置;1. mybatis中的延迟加载问题:在一对多中,当我们有一个用户,它有100个账户。在查询用户的时候,要不原创 2022-03-25 13:08:26 · 500 阅读 · 0 评论 -
《Mybatis入门到精通》——2.基于XML的CRUD
Day_02基于XML方式实现CRUD;2种方式:XML和注解,但实际开发中XML用的多;表结构 user表表的实体类 User类/** * User表的实体类; */@Datapublic class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex;原创 2022-03-25 12:59:02 · 633 阅读 · 0 评论 -
《Mybatis入门到精通》——1. Mybatis入门
Mybatis学习前——关注点分离它是最经典的架构设计原则之一。1. 架构中需要变化的部分, 一定要能够非常清晰地被识别出来 。2. 若架构中某部分发生变化,则该变化不会影响到其他部分。3. 若架构中某部分需要扩展,则该扩展也不会影响到其他部分 。架构能做到关注点分离,才能做到真正意义上的解耦;最经典的的就是“前后端分离”;前后端分离针对前端,需要将界面展现与数据展现相分离: 针对后端,不仅要清晰地理解业务逻辑,善于将数据进行合理的建模,最终还要做到将业务逻辑与数据逻辑相分离原创 2022-03-24 12:43:52 · 1356 阅读 · 1 评论