一、Mybatis概述
为什么我们要学Mybatis,直接用JDBC不行吗?
首先,Mybatis是一个框架,它内部封装了JDBC,使我们开发者只需要去关注sql怎么实现就行了 而不用考虑加载驱动、创建连接、创建 statement 等繁杂的过程
其次:Mybatis是一个工作中经常用到的一个框架 我们必须尽快熟练掌握它
二、Mybatis快速入门
1.环境准备:创建一个数据库
CREATE DATABASE mybatis_day01;
USE mybatis_day01;
CREATE TABLE t_user(
uid int PRIMARY KEY auto_increment,
username varchar(40),
sex varchar(10),
birthday date,
address varchar(40)
);
INSERT INTO `t_user` VALUES (null, 'zs', '男', '2018-08-08', '北京');
INSERT INTO `t_user` VALUES (null, 'ls', '女', '2018-08-30', '武汉');
INSERT INTO `t_user` VALUES (null, 'ww', '男', '2018-08-08', '北京');
2.创建一个Maven工程
提示:我的idea版本号为2018.2 这个版本相对稳定 2020.1版本太多bug了
1. 新建一个maven的模块
2. 目录结构展开之后是这样的
3.创建目录结构
4.导入pom依赖
<!--1. 添加依赖-->
<dependencies>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--MyBatis坐标-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--lombok 依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
</dependencies>
5. 创建实体类
注意:实体类的属性名和数据库的字段名尽量保持一致
6. 创建UserDao接口
7. 创建映射文件UserDao.xml
8.接下来可以开始配置映射文件了
参考文档:https://mybatis.org/mybatis-3/zh/getting-started.html
如果打不开网页的可以直接复制下面的配置信息
<?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">
<mapper namespace="com.ysx.dao.UserDao">
<select id="findAll" resultType="com.ysx.pojo.User">
select * from t_user
</select>
</mapper>
9. 接下来还需要创建核心配置文件(用于连接数据库、设置别名、将UserDao.xml映射文件注册到mybatis)
如果打不开网页的可以直接复制下面的配置信息
<?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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_day01"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--自动扫描包下的所有xml文件 并注册到mybatis-->
<mappers>
<package name="com.ysx.dao"></package>
</mappers>
</configuration>
10. 接下来开始测试
1.使用resource读取核心配置文件
resource这个类 注意导包 导入的是org.apache.itbatis.io这个包 因为mybatis前身就是ibatis******
@Test
public void test_01() throws IOException {
// 读取核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
// 将核心配置文件流传给SqlsessionFactoryBuild 构建出一个工厂
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
// 从工厂中获取到一个sqlsession对象
SqlSession sqlSession = build.openSession();
// 通过sqlsession对象调用getmapper方法 传入userDao接口 返回一个动态代理对象
UserDao mapper = sqlSession.getMapper(UserDao.class);
//通过代理类就能访问的方法 执行查询
List<User> all = mapper.findAll();
//遍历结果
for (User user : all) {
System.out.println(user);
}
}
查询结果