创建项目
使用IDEA创建Maven工程
IDEA配置Maven
我们新建Maven项目名为“mybatis-demo“,设置好Maven版本、配置文件以及Maven仓库
准备数据源
因为MyBatis是一个持久层框架,所以我们在配置及使用之前需要执行如下SQL语句先准备好数据源
删除mybatis_demo数据库
drop database if exists mybatis_demo;
#创建mybatis_demo数据库
create database mybatis_demo;
使用mybatis_demo数据库
use mybatis_demo;
#创建account表
create table user (
id int auto_increment primary key,
username varchar(20),
age int,
score int
);
新增数据
insert into user (id, username, age, score) values
(1,‘peter’, 18, 100), (2,‘pedro’, 24, 200),
(3,‘jerry’, 28, 500), (4,‘mike’, 12, 300),
(5,‘tom’, 27, 1000);
删除mybatis_demo数据库
drop database if exists mybatis_demo;
创建mybatis_demo数据库
create database mybatis_demo;
#使用mybatis_demo数据库
use mybatis_demo;
#创建account表
create table user (
id int auto_increment primary key,
username varchar(20),
age int,
score int
);
#新增数据
insert into user (id, username, age, score) values
(1,‘peter’, 18, 100), (2,‘pedro’, 24, 200),
(3,‘jerry’, 28, 500), (4,‘mike’, 12, 300),
(5,‘tom’, 27, 1000);
JDBC连接及操作数据库
引入MySQL驱动包
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
刷新maven等待自动下载
libraries中有了导入的包表示依赖引入完成
代码实现
public class JDBCDemo {
public static void main(String[] args) throws Exception {
//1.注册驱动
Class.forName(“com.mysql.cj.jdbc.Driver”);
//2.获取连接
Connection connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mybatis_demo”, “root”, “root”);
//3.获取Statement对象
PreparedStatement preparedStatement = connection.prepareStatement(“select * from user WHERE id = ?”);
preparedStatement.setInt(1, 1);
//4.执行SQL语句返回结果集
ResultSet resultSet = preparedStatement.executeQuery();
//5.遍历结果集
while (resultSet.next()) {
System.out.println("username: " + resultSet.getString(“username”));
System.out.println("age: " + resultSet.getString(“age”));
}
//6.释放资源
resultSet.close();
preparedStatement.close();
connection.close();
}
}
步骤总结
注册驱动
获取连接
获取statement对象
执行SQL语句返回结果集
遍历结果集
关闭连接释放资源
引入MyBatis依赖
maven仓库查询网址:MavenRepository
mybatis:MyBatis基础包
logback-classic:日志依赖
libraries中有了所有导入的包表示依赖引入完成
编程式配置方法
MyBatis官方文档中并未详细的介绍如何编程式使用MyBatis,因为编程式配置方法代码有点复杂
但是大家没必要被代码吓退,因为在实际的开发中几乎没有机会去写这段代码,一般都是通过配置文件来拿到配置然后开启会话的
我们之所以讲解编程式配置方法,是因为使用配置文件配置时屏蔽了太多的细节
为了层层递进的介绍MyBatis的基础用法,使大家熟悉MyBatis整体结构,我们需要讲解编程式配置方法
代码实现
删除JDBC连接及操作数据库:JDBCDemo.java
新建编程式配置文件:StartNoXml.java
@SuppressWarnings({“SqlResolve”, “SqlNoDataSourceInspection”, “Duplicates”})
public class StartNoXml {
public static void main(String[] args) throws SQLException {
// 准备jdbc事务类
JdbcTransactionFactory jdbcTransactionFactory = new JdbcTransactionFactory();
// 配置数据源
PooledDataSource dataSource = new PooledDataSource(
“com.mysql.cj.jdbc.Driver”,
“jdbc:mysql://localhost:3306/mybatis_demo?useSSL=false”,
“root”,
“root”);
// 配置环境,向环境中指定环境id、事务和数据源
Environment environment = new Environment.Builder(“development”)
.transactionFactory(jdbcTransactionFactory)
.dataSource(dataSource).build();
// 新建 MyBatis 配置类
Configuration configuration = new Configuration(environment);
// 得到 SqlSessionFactory 核心类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
// 开始一个 sql 会话
SqlSession session = sqlSessionFactory.openSession();
// 得到 sql 连接并运行 sql 语句
PreparedStatement preStatement = session
.getConnection()
.prepareStatement(“SELECT * FROM user WHERE id = ?”);
preStatement.setInt(1, 1);
ResultSet result = preStatement.executeQuery();
// 验证结果
while (result.next()) {
System.out.println("username: " + result.getString(“username”));
System.out.println("age: " + result.getString(“age”));
}
// 关闭会话
session.close();
}
}
步骤总结
得到 MyBatis 配置信息,即代码中的Configuration类
JdbcTransactionFactory 表示事务工厂,当 MyBatis 需要新建事务的时候,会通过它来新建
PooledDataSource 表示数据源,通过其构造参数,我们传入了数据库 url,数据库用户和密码等配置
Configuration 负责 MyBatis 架构中的配置部分,可以有多个 Environment
每个 Environment 都必须有唯一的 id,即代码中的 development
通过 Configuration 来创建 SqlSessionFactory
MyBatis 是通过会话的方式来执行 SQL 的,因为我们必须拥有一个会话创建器,即会话工厂
新建 SqlSession 来执行 SQL
有了 SqlSessionFactory 后,我们就可以方便地新建会话,并通过会话来执行 SQL 了
而PreparedStatement及以下的内容,其实并不属于 MyBatis,它们是 JDBC 提供的,在实际的 MyBatis 开发中,你也不会这样去执行 SQL,在这里我们只是为了测试是否配置成功,并且展示 MyBatis 和 JDBC 的关系。
缺点分析
可以看到,编程式使用 MyBatis 其实是比较复杂,需要开发人员十分熟悉 MyBatis 的 API,所以绝大多数资料都推荐配置的方式使用 MyBatis
配置文件配置MyBatis
代码实现
在resources文件夹下新建配置文件:mybatis-config.xml
configuration 标签对应 Configuration 类
environment 标签对应 Environment 类
transactionManager 标签对应 JdbcTransactionFactory 类
dataSource 标签对应 PooledDataSource 类
启动类:StartWithXml.java
修改类名为StartWithXml
读取配置文件
1
InputStream configuration = Resources.getResourceAsStream(“mybatis-config.xml”);
步骤总结
读取配置文件,即 mybatis-config.xml
通过配置文件来创建 SqlSessionFactory
新建 SqlSession 来执行 SQL