一、全面了解Mybatis
1.1 学前需掌握(之前文章有讲)
JDBC
MySQL
Java基础知识
Maven
Junit
1.2 什么是Mybatis
Mybatis是一款优秀的持久层框架,支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis中文文档:https://mybatis.net.cn/
1.21 什么是持久化框架?
持久是相对于瞬时来说的,可以理解成数据保存在数据库或者硬盘一类可以保存很长时间的设备里面,不像放在内存中那样断电就消失了,也就是把数据存在持久化设备上。
1.22 为什么要使用持久化框架?
企业中数据很重要(各种订单数据、库存数据之类的),比应用程序本身更重要, 所以需要把数据持久化。持久化可以通过很多方式,写文件和数据库都可以。只是现在企业一般都会选择把数据持久化到数据库中,因为可以很方便的查询统计分析,但数据库的数据最终还是会写到磁盘上的。Java 程序员为了操作数据库, 最开始是使用JDBC来进行的,但是这种方式开发效率低 ,要写一堆重复代码。
1.3 Mybatis的特点
MyBatis是iBatis的升级版,用法有很多的相似之处,但是MyBatis进行了重要的改进。例如:
1、Mybatis实现了接口绑定,使用更加方便。
在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。
2、对象关系映射的改进,效率更高
3、MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。
优点:
1. 简单易学
Mybatis本身就很小且简单,没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
2.灵活
Mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。
3.解除sql与代码的耦合
将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。
4.提供映射标签,支持对象与数据库的orm字段关系映射
5.提供对象关系映射标签,支持对象关系组建维护
6.提供xml标签,支持编写动态sql。
二、开发步骤
1. 创建Maven工程
创建一个普通的Maven工程
2. 添加依赖包
3. 创建核心配置文件
在resources目录下创建mybatis-config.xml-配置自己的数据库地址、名字、密码以及mysql驱动
4.创建实体类
跟数据库记录对应的实体类
5. 实体与数据库的映射配置文件
在resources目录下创建映射文件User.xml,并在核心配置中添加引用-,非常重要,此后每编写一个Mapper.xm文件都要注册一次!!!
mybatis-config.xml
6.测试代码
三、核心配置详解
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下
(保证顺序):
1.属性properties
可以通过properties属性来实现引用配置文件
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置(即db.properties) db.properties
mybatis-config.xml使用properties标签后,如下所示:
方式一:
方式二:
使用${},可以引用properties里面定义的属性和已经加载的db.properties配置文件中的信息。
方式三:
属性也可以被传递到
SqlSessionFactoryBuilder.build()方法中。例如:
new SqlSessionFactoryBuilder().build(reader, props);
注意:如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:
· 在 properties 元素体内指定的属性首先被读取。
· 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属
性文件,并覆盖已读取的同名属性。
· 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。
2.类型别名
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置
意在降低冗余的全限定类名书写
2.1 可以给实体类起别名
2.2 也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,每一个在包 com.guo.pojo 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名
总结:在实体类比较少的时候,使用第一种方式,如果实体类很多,建议使用第二种
3.映射器
用于导入mapper映射文件
星辰大海,永不止步
END