mybatis笔记(一)

mybatis概述

mybatis是一个持久层框架,用java编写,封装了很多jdbc细节,开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程,它使用了ORM思想,实现了结果集的封装。

ORM:Object Relational Mappging 对象关系映射

简单的说:就是把数据库和实体类及实体类的属性对应起来,让我们可以操作实体类及实现操作数据库

mybatis环境搭建

  • 1.创建maven工程并导入坐标
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.4</version>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.18</version>
    </dependency>
  • 2.创建实体类和dao接口
  • 3.创建mybatis的主配置文件SqlMapConfig.xml
  • 4.创建映射配置文件

    注意事项

  • 1.包在创建时 com.demomybatis.dao他是三级目录结构
  • 2.mybatis的映射配置文件位置必须和dao接口的包结构相同
  • 3.映射配置文件的mapper标签和namespace属性的取值必须是dao接口的全限定而类名
  • 4.映射配置文件的擦偶哦配置(select) id的取值必须是dao接口的方法名

当我们遵从2,3,4点之后,我们开发中就无需再写dao的实现类

SqlMapConfig.xml代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="mysql">
<environment id="mysql">
<!--使用jdbc事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池(数据源) -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 引入映射配置文件 -->
<mappers>
<mapper resource="cn/demomybatis/dao/StudentDao.xml"/>
</mappers>
</configuration>

StudentDao.xml代码

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace:命名空间,用于隔离sql-->
<mapper namespace="cn.demomybatis.dao.StudentDao">
<!-- 配置查询所有 id为dao的方法名-->
<select id="findAll" resultType="cn.demomybatis.domain.Student" parameterType="cn.demomybatis.domain.Student">
select * from student
</select>
</mapper>

mybatis入门案例:

  • 1.读取配置文件
  • 2.创建SqlSessionFactory工厂
  • 3.创建SqlSession
  • 4.创建Dao接口的代理
  • 5.执行Dao中的方法
  • 6.释放资源
注意:需要在映射配置中告知mybatis要封装到哪个实体类中,配置的方式:指定实体类的全类名

增删改需要提交事务

sqlSession.commit()

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package cn.demomybatis.test;

import cn.demomybatis.dao.StudentDao;
import cn.demomybatis.domain.Student;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
* mybatis入门
*/
public class mybatistest {
public static void main(String[] args) throws Exception {
//读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//使用工厂生产SqlSession对象
SqlSession sqlSession = factory.openSession();
//创建Dao接口的代理对象
StudentDao studentDao = sqlSession.getMapper(StudentDao.class);
//使用代理对象执行方法
List<Student> list = studentDao.findAll();
for (Student student:list){
System.out.println(student);
}
//释放资源
sqlSession.close();
in.close();
}
}

评论