题外话:很久很久之前用过mybatis,之前是不是叫ibatis,有点忘记了。
一堆模板代码的生成,说实话,在现在Java Class Config已经用得很习惯的情况下,再让我看那一堆XML的Mapper之类的配置,我会吐血。
个人更倾向于根据实际项目选择,但绝大部分的公司一般JPA就足够了,因为JPA也是接口层级,所以对应HQL一般也不直接被搬上来用,个人感觉直接用sql更好(虽说是留了可以替换其他JPS实现的ORM框架,但好像实际上很少会去无缝切换。。。。)
从Boss直聘app中的技能树看到了,很经典地都写SSM项目,很多人喜欢自己写SQL吧(说实话,感觉这个并非面向接口编程),对此我个人的看法是,大部分用框架直接生成,少部分定制(仅限于我目前就职过的公司)
吐槽下,Boss直聘中的设计模式问题居然都是Spring的问题
一、参考网站(中文):https://mybatis.org/mybatis-3/zh/index.html
二、定义:套用下上面网站的--MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
简单来说,如果是停留在老版本的印象中,应该是:
- 得自己写一堆映射配置文件
- 得自己实现缓存
现在应该是可以
- 自动映射出一些常见的sql操作
- 默认一二级缓存(二级需要关闭session之后才会被提交,缓存优先从二级缓存获取)
三、如何使用
- 入门版,参考 , demo 映射配置的方式(参考:https://mybatis.org/mybatis-3/zh/configuration.html#mappers)y
- class:个人比较喜欢这个,就是相对于spring data jpa而言,一般的查询语句也要写一大堆注解,很烦;至于那种支持sql 列名注入的通用方式,实在不爱用
- resource:xml配置
- url:全路径名,好像用来加载外部配置文件的,不直接包含在项目中
- package:应该是通过扫描的方式,扫描的应该是class类型的
- 一级缓存:
- 二级缓存:可以自行指定缓存的工具
- 其他:有用到在继续看了,说实话,不爱用这个,有的人非要鄙视说用hibernate都不会写sql也没办法,我觉得这是一个趋势,本来Java就是写业务的,你懂sql学sql没错,但没必要强求项目都要这样写,毕竟公司要的是效益
读源码的方向
- 配置文件的解析,重点在于mapper
- connection实际获取的时间点
- 动态代理的应用
- 一级和二级缓存