Mybatis
一. ORM框架
二. mybatis创建步骤
三. 配置文件说明
四. 查询语句
五.多个类映射
一. ORM框架
O: object
R: Relationship
M: Mapping
对象关系映射
Mybatis是持久层框架,几乎免除所有JDBC代码以及设置参数和获取结果集的工作。
我们的数据库是关系型数据库。
我们的代码是面向对象的。
之前我们通过代码(jdbc)操作数据库是有问题的,就是要把关系型数据库转换成对象。
那么之前的查询结果并不是对象,也就是说返回的数据不能直接使用,要进行封装,即把ResultSet类型的数据封装成list,然后才可以使用
简单来说,用jdbc实现增删改查都需要数据的转换。
---
ORM框架指的是一类框架,而Hibernate、Mybatis都属于ORM框架。
Hibernate之前是比较流行的,现在大多项目是用Mybatis。
Hibernate主要做中大型项目,Mybatis主要做中小型项目。
设想:能不能查询的结果直接就是List?能不能插入数据的时候只需要传入一个对象?
能不能删除数据时候只传入一个对象?能不能修改数据时候也传入一个对象?
ORM框架可以帮我们自动实现数据的转换,我们程序员省去了数据转换。
ORM还可以帮我们实现数据库的自动连接和释放。
现在的ORM框架甚至可以帮我们生成常用的sql语句。
二. Mybatis搭建步骤
1. 创建maven项目
2. 引入依赖包
3. 创建maven的配置文件
创建普通xml即可
4. 创建db.properties文件
5. 把db.properties配置到Mybatis-config
6. 创建数据库 并创建表
7. 根据表结构创建类
8. 创建dao接口
9. 创建映射文件
10. 在配置文件中配置映射文件的路径
11. 写sql
12. 写测试类进行测试
三. 配置文件的说明
// 指定mybatis数据库配置文件
<properties resource="db.properties" />
// 指定Mybatis所用日志的具体实现
<settings>
<setting name="logImpl" value="LOG4J" />
</settings>
// 映射文件的路径 注意 /表示
<mappers>
<mapper resource="com/zhi/dao/UserDao.xml" />
</mappers>
四. 查询语句
注意:写sql语句时候,如果没有提示怎么办?
去http://mybatis.org/dtd/mybatis-3-mapper.dtd下载dtd文件
下载完后,在eclipse选择window----preferences----xml catalog—add
location:dtd文件位置
key type:URI
key:头文件 public边的内容
问题:怎么做到表的字段跟类的属性一一对应?
根据命名规范来实现。
即图中所示,把userName的值给类中的userName,
如果类中的属性不是userName,而是userName2,那么传值失败,null。
问题:那么如果累的属性名是userName2,而表中字段userName,不改源码情况下,怎么做到映射?
可以利用sql语句中的起别名来实现。
问题:list中存放了9个对象,这9个对象是怎么产生的?
利用反射实现的,利用反射实例化了9个对象
总结 :目前Mybatis帮我们做了哪些事?
- 自动建立连接,释放连接。
- 封装数据。
注意点:
删除 增加 修改时候,最后要提交事务。
如果不提交事务会报错:
提交事务:
也可以事务回滚,rollback
五. 多个类的映射
映射:把结果集映射到对象数据
映射的依据是什么?
依据就是命名规范。