官网学习地址
一、简介
mybatis是一款orm类型的数据持久化框架,将jdbc的手动注册驱动、建立连接、获取sql执行对象等操作进行了自动化装配,开发人员将精力更多sql语句的编写。
mybatis支持自定义 SQL、存储过程以及高级映射,可以通过sql映射文件实现sql语句的编写,支持动态sql,用条件判断进行查询可以实现sql复用。
orm概述
即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射。
Java中的类,示例对象,类的属性分别对应数据库中的表,记录,字段名称。
二、对比Jdbc
Jdbc的开发步骤:注册驱动、获得链接、获取sql容器、执行语句、遍历结果集、关闭资源
存在的问题:代码冗余量大,耦合度高不利于维护,复杂查询麻烦,要手动填充数据
Mybatis的优点:
- 减少代码量,避免冗余。
- 分离sql语句和java代码。降低耦合度。
- 提供了动态sql,避免sql拼接。
- mybatis 连接池解决多次开关链接,浪费资源的问题。
- 自动映射: 查询出来的数据可以自动的映射到对象中去
三、以学生信息为案例的demo
1.创建项目,在pom.xml导入依赖
2.编写mybatis_config.xml文件,
引入外部属性文件
文件内容就是一些连接信息
设置setting(个人使用这几个标签,其实还有很多其他标签)
分页插件
链接数据库的环境
指定映射器的位置,都写在一个包里可以直接指定包名
编写接口
对应着在source建里xml
xml里的路径要对应上面建的位置
xml内容
controller里的函数,这里只展示查询所有
其中用到了一些注解和标签,可以到官网学习
四、其他操作
1.多参传递,可以用注解重命名
那边sql语句直接调用注解里重命名后的名字
2.解决sql拼接问题
将数据库数据映射到list中,要用写好的实体类来装填,用resultType指定实体类在项目的位置。
使用if标签
where标签(可以自动过滤掉第一个条件的and或者or)
set标签(能自动去掉最后一个条件的逗号)
sql片段(封装成字段,下次直接ref这个块可以调用字段)
foreach标签
代替这种集合查询
获取符合范围内条件的数据
3.多表操作
<1>一对一查询
直接在主表的对应类里,绑定附表
直接建一个新的接收类型resultMap
需要标注主键,普通字段,附表字段
一对多
用户的属性里自带List
直接建一个新的接收类型resultMap
需要标注主键,普通字段,附表字段(这里用collections)
<3>多对多
4.分步查询
一对多的分布查询
getOrder映射的mapper。xml里
5.懒加载:当使用到对象的属性时,才发送select语句进行查询。 这样的查询懒加载查询
还可以直接在setting设置全局延迟加载,但是局部设置休闲级更高
6.注解完成多表操作
其实映射器的写法无论注解还是xml都可以,
注解相对来说更集中方便,但不适合复杂的查询。
xml支持复用和动态sql,更加灵活强大。
将注解写到Mapper interface里代替xml里的sql语句
<1>1v1的注解加法,
@interface是注解类