(15Min)
一、MyBatis作用
MyBatis 是一款优秀的持久层框架,它是帮助您快速开发数据库应用的工具。它支持自定义 SQL、存储过程以及高级映射。它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低。
注:持久化就是将程序的数据在持久状态和瞬时状态转化的过程
1、它支持定制化 SQL、存储过程以及高级映射。
2、它避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
3、它可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
传统的JDBC代码太复杂了。简化、框架、自动化。不用Mybatis也可以。但用了更好。
优点:
- 简单易学、灵活;
- sql和代码的分离,提高了可维护性。
- 提供映射标签,支持对象与数据库的orm字段关系映射
- 提供对象关系映射标签,支持对象关系组建维护
- 提供xml标签,支持编写动态sql。
二、ORM
Object Relation Mapping 对象关系映射.对象指的是面向面向对象,关系指的是数据库中的表,
对象与关系的映射(ORM)
半自动ORM:
用MyBatis进行开发的,需要手写SQL语句,而ORM框架例如Hibernate则不需要编写SQL语句。正因为如此,MyBatis使用自定义SQL,所以更加灵活,尤其在多表操作。
三、MyBatis
1、架构
2、MyBaits核心对象
SqlSession对象,该对象包含了执行SQL语句的所有方法,例如JDBC里面Connection
MappedStatement对象,该对象负责对SQL封装,用于存储需要映射的SQL语句及参数等信息
Executor接口,将传递过来的参数动态生成SQL语句,负责查询缓存。
ResultHandler对象,用户返回结果集合,封装成想要的数据类型,可以自定义返回类型。
最重要的对象
3、配置文件
两个,一个是Mybatis自身的配置,一个是对OR映射的配置,内含所需的SQL。
4、执行流程
四、操作
两个方式:映射配置文件、注解
1、map文件方式
2、注解方式
2.1配置
以下为查询,增加、删除和修改的步骤类似。
<!--在控制台显示SQL语句-->
<settings> <setting name="logImpl" value="STDOUT_LOGGING"/></settings>
<!--加载使用注解的接口所在的包-->
<mappers> <package name="mapper"/> </mappers>
2,2 在以上包的的接口中增加注解及相应的DQL
public interface UserToBanjiMapper {
@Select("select * from user")
List<User> findUser();
}
2.3 测试
private SqlSession sqlSession;
private UserTpBanjiMapper mapper;
this.sqlSession = SqlSessionUtils.getSession();
mapper = sqlSession.getMapper(UseToBanjiMapper.class);
List<User> users= mapper.findUser();
for (User user: users) {
System.out.println(user.getId() + "," + user.getNumber());
}
3.一对一映射的注解
@Select("select * from user")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "name",property = "name"),
@Result(
property = "c",
javaType = Banji.class,
column = "cid",
one = @One(select = "onetoone.BanjiMapper.findById")
)
})
List<User> findAll();
要传入的参数 id 就是在UserMapper中SQL查询出来的结果中的一个列。
public interface BanjiMapper {
@Select("select * from bani where id=#{id}")
Banji findById(Integer id);
}
测试