- 一、概述
- what?
- why?
- advantage!
- 二、快速入门
- 使用步骤
- 三、映射文件概述
- 图示
- 详解
- 四、核心配置文件
- 图示:
- 详解
- 5、相应API
- 6、注意的问题
1.什么是mybatis?
mybatis是一个半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,具有延迟加载和缓存等特性
2.什么是ORM
ORM(Object Relational Mapping):对象映射关系,采用元数据(配置文件)来描述对象与关系映射的细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。
对象可以是java对象,关系可以指数据库中的关系模型。对象映射关系可以理解为将java中的一个类映射为数据库中的一张表,可以将对象中的各属性映射到数据库表中的各个字段。
1.为什么mybatis是一个半自动的框架?
-
在mybatis在映射时,仅有基本的字段映射,对象数据以及对象的实际关系任然需要通过手动编写sql来实现和管理。
-
由于mybatis需要手写sql,使得与数据库的耦合性比较高,移植性比较差。
-
在日志系统方面,mybatis不是比较完善,仅有基本的记录功能
1、相对于传统JDBC有哪些优势?
但相比JDBC,它提供了输入映射和输出映射,可以很方便地进行SQL参数设置,以及结果集封装。并且还提供了关联查询和动态SQL等功能,极大地提升了开发的效率。并且它的学习成本也比hibernate低很多
二、快速入门以下部分步骤会涉及到一些文件配置方面的知识,这部分在下面的会专门谈到。
使用步骤1️⃣添加MyBatis坐标
mysql mysql-connector-java 5.1.26 org.mybatis mybatis 3.4.6
2️⃣ 2、创建user数据表
3️⃣3、编写User实体类
4️⃣编写映射文件UserMapper.xml
该文件主要是用来存放sql语句和映射类型
select * from user insert into user values (#{id},#{username},#{password}) update user set username =#{username} ,password = #{password} where id = #{id} delete from user where id = #{id}
5️⃣ 编写核心文件SqlMapperConfig.xml
该文件保存的是一些数据的核心配置和加载映射文件
6️⃣编写测试类
@Test
//查询操作
public void Test1() throws IOException {
//获得核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行操作,参数:namespace+id
List userList = sqlSession.selectList("userMapper.findAll");
//打印数据
System.out.println(userList);
//释放资源
sqlSession.close();
}
@Test
//插入操作
public void Test2() throws IOException {
//模拟user对象
User user = new User();
user.setUsername("tom");
user.setPassword("123456");
//获得核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行操作,参数:namespace+id
sqlSession.update("userMapper.update",user);
//如果执行更新操作,要执行更新操作
sqlSession.commit();
//释放资源
sqlSession.close();
}
7️⃣输出结果(查询)
- 约束头:对文件的格式和形式进行约束,如第一行指定该文件是xml类型,版本号1.0,指定编码是UTF-8;第二行则引入了mybatis,会在添加标签是给出相应的提示。
-mapper标签:namespace参数为命名空间,与子标签的id组成查询语句,用法如下:
.....
- select/update/insert等,与父标签mapper一起组成查询语句
四、核心配置文件 图示:
关于事务管理和数据源类型
事物管理: 事物管理分为两种,JDBC&MANAGED
数据源类型: 一共有如下几种,其中第二种常用
详解层级关系
- environments标签:主要是配置数据源(数据库)环境,支持多环境配置如果都多环境,可以指定默认的环境名称
-mappers(映射文件)标签:该标签主要用于加载映射文件
- typeAliases标签:可以给映射的实体对象定义别名,注意标签位置要遵循跟标签内的顺序原则,否则会导致跟标签报错。
此外mybatis还提供了一些常见数据类型的别名,通过编写对应的别名可以自动识别数据类型。
在进行CRUD操作时,由于session工厂会调用openSessionAPI并返回给Sql会话对象,此时会默认开启事物,但不会提交事务。由于查询操作不涉及事务提交,而插入、修改、删除会对数据库数据进行改变。因此需要进行事务提交(commit)



