简介
什么是 MyBatis?
MyBatis 是一款优秀的持久层框架(其实也就是半自动的ORM),它支持自定义 SQL、存储过程以及高级映射(映射可能是你说有疑惑的终极答案)。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML(建议采用) 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。以上就是官方的解答了,作为一款持久层框架确实是很
香的,值得追捧
日常学习第一步:springboot 集成mybatis,不多说上货
1、引入依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2、yml配置
mybatis:
mapper-locations: classpath:mapper/*.xml #扫描xml
type-aliases-package: top.glkj.teacherEvaluation.mapper #扫描mapper文件目录
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启控制台打印
到这里有很个疑问,spring boot 明明可以注解式sql,为啥不用(其实我也不是很了解,但是知道一点据说使用注解式回答项目其他成员打死)
采用注解式的步骤拿走不谢(愿天堂没有程序员):
1、上面第一步就是这第一步(我不想在写一次了-)
2、在启动类中上方加入@mapperscan(“这里是你的mapper路径”)
3、mapper中直接开始写如:
@inster(“这里是你的sql”)
public List<这里是你的实体类> getAlluser(){
return;
}
4、没有了,等待同事的淳淳教导
作用域(Scope)和生命周期
类名称 | SCOPE |
---|---|
SqlSessionFactoryBuilder | method |
SqlSessionFactory | application |
SqlSession | request/method (可以认为是线程级) |
Mapper | method |
说着这还得说说resultMap
resultMap 元素有很多子元素和一个值得讨论的结构。
resultMap
-
constructor - 用于在实例化类时,注入结果到构造方法中
idArg - ID 参数;标记出作为 ID 的结果可以帮助提高整体性能
arg - 将被注入到构造方法的一个普通结果 -
id – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能
-
result – 注入到字段或 JavaBean 属性的普通结果
-
association – 一个复杂类型的关联;许多结果将包装成这种类型
-
嵌套结果映射 – 关联可以指定为一个 resultMap 元素,或者引用一个
-
collection – 一个复杂类型的集合嵌套结果映射 – 集合可以指定为一个 resultMap 元素,或者引用一个
-
discriminator – 使用结果值来决定使用哪个 resultMap.
resultMap 关联查询.
关联查询分为两种: -
关联的嵌套查询
相信用过ssm框架童鞋们都知道了,在这不做过多描述
再者就是说说$和#了
(markdown隔绝) #{} 这种取值是编译好SQL语句再取值(PreparedStatement安全,有效防止sql注入,翻译成了一个 “?”)
${} 这种是取值以后再去编译SQL语句 (Statement,代表一个静态SQL语句,只能执行一次.)
(虽然没得啥好说的,但是面试的hr一说起sql相关的东西就是喜欢这个调调)
呐,就这些标签了
、、、、其中还有关系对应标签(本人懒,自己去面向百度),加上动态sql的9个标签,trim|where|set|foreach|if|choose|when|otherwise|bind等,其中为sql片段标签,通过标签引入sql片段,为不支持自增的主键生成策略标签。
我是最后一点了
Mybaits的优点:
(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。
(2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;
(3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。
(4)能够与Spring很好的集成;
(5)提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
MyBatis框架的缺点:
(1)SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。
(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
MyBatis框架适用场合:
(1)MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。
(2)对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。