官方中文文档–>https://mybatis.org/mybatis-3/zh/getting-started.html 或点击–>mybatis文档 mybatis3版本的源码–>https://github.com/mybatis/mybatis-3/releases 或点击–>mybatis3源码
1.什么是mybatis
mybatis是个轻量级 的持久层框架 ;简化了持久层的使用;它是由iBatis 更名而来的. 基于Java的数据库交互框架;封装了很多基础功能,方便开发使用.
mybatis框架也被称为ORM框架 ORM(ORM Object Relational Mapping ) 即:对象关系映射; 即使用简单的 XML 或注解 来配置和映射原生信息 ,将接口和 Java的实体类 POJO(Plain Old Java Objects,普通的 Java 对象)映射为数据库中的记录 .
官方文档–>https://mybatis.org/mybatis-3/zh/getting-started.html
持久层是什么呢? Dao (Data Access Objects) 数据访问对象 ;也就是负责项目中的JAVA实体类对象与数据库进行交互; 之前比较经典的MVC三层架构,就有它的一席之位; MVC三层架构是啥呢? M(Model):就是Dao层和实体类模型层; V(View):就是视图层;即前端的展示层; C(Controller):就是控制层,即对之前的servlet进行了封装;
使用mybatis框架的话;就不用大量地 去写代码手动设置参数以及获取结果集;
例如,之前写某个项目时,写的dao层;没有封装的那种; 要写很多的参数,然后获取结果集时还得一个一个取出;
传统的jdbc编程;比如说一个根据ID查询学生信息的sql处理;
- 首先要加载数据库驱动;
- 然后创建并获取数据库链接;
- 创建 preparedStatement 对象;
- 拼写 sql 语句,进行预编译;;
- 然后设置 sql 语句中的占位符的值;
- 执行 sql 语句并获取结果;
- 对 sql 执行结果进行解析处理;要把结果一个一个地存到实体类的对象中;
- 最后释放资源;
2.基础搭建使用
先去数据库创建数据表吧,比较简单,仅作为基础搭建mybatis使用的;
CREATE DATABASE IF NOT EXISTS day20211024_study_mybatis_db CHARSET utf8;
CREATE TABLE IF NOT EXISTS t_user(
`id` INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
`account` VARCHAR(15) COMMENT '账户',
`password` VARCHAR(10) COMMENT '密码',
`address` VARCHAR(20) COMMENT '地址'
);
直接创建javaEE项目
不用选web ;直接下一步
写好项目名;存放地址;打包后的路径,构建名,版本号
(1)添加相关maven依赖
要使用mybatis,那么首先就得用添加它的jar包依赖; 当然,由于要和数据库交互,那么还要配置mysql连接的驱动jar包依赖
在maven核心配置文件pom.xml 中
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
</dependencies>
创建实体类User
(2)创建用户实体类User
User 类的配置
package com.xiaozhi.pojo;
public class User {
private int id;
private String account;
private String password;
private String address;
public User() {
}
public User(String account, String password, String address) {
this.account = account;
this.password = password;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
(3)创建核心配置文件mybatis-config.xml
在main 目录的resources 目录下创建mybatis-config.xml
本次简易搭建,没有将所有的配置参数属性都考虑;
<?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>
<typeAliases>
<typeAlias type="com.xiaozhi.pojo.User" alias="user"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/day20211024_study_mybatis_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root" />
<property name="password" value="123456"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC">
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/day20211024_study_mybatis_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root" />
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
(4)创建持久层接口UserMapper
package com.xiaozhi.mapper;
import com.xiaozhi.pojo.User;
public interface UserMapper {
void addUser(User user);
}
(5) 创建持久层映射配置文件UserMapper.xml
在resources 目录下创建mapper 文件夹;创建UserMapper.xml 配置文件
<?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.xiaozhi.mapper.UserMapper">
<insert id="addUser" parameterType="user">
insert into t_user(account,password,address)
values (#{account},#{password},#{address})
</insert>
</mapper>
(6)去核心配置文件mybatis-config.xml 配置mapper 映射文件
<?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>
<typeAliases>
<typeAlias type="com.xiaozhi.pojo.User" alias="user"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/day20211024_study_mybatis_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root" />
<property name="password" value="123456"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC">
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/day20211024_study_mybatis_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root" />
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
(7)测试使用;这里几个步骤比较重要;
📢7.1–>先创建用户对象
User user = new User("小智","123654789","陕西汉中");
📢7.2–>以字符流的方式读取核心配置文件mybatis-config.xml
Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
📢7.3–>创建SqlSessionFactory对象
一旦创建,SqlSessionFactory 就会在整个应用过程中始终存在。所以没有理由去销毁和再创建它,一个应用运行中也不建议多次创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
注意,这里使用的build方法,还能指定环境变量啊;即刚才的核心配置文件中的环境变量environment ; 不写这个参数的话,就默认为环境配置environments 的default 来指定默认使用的环境变量;
📢7.4–>创建SqlSession对象
SqlSession就类似于JDBC中的Connection连接对象;表示一次与数据库连接的会话;
SqlSession sqlSession = sqlSessionFactory.openSession();
📢7.5–>得到UserMapper映射接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
📢7.6–>执行接口方法
但实际上执行了UserMapper.xml下的sql语句
userMapper.addUser(user);
📢7.7–>提交事务
sqlSession.commit();
📢7.8–>关闭sqlSession会话
sqlSession.close();
TestByXiaoZhi 类总配置
package com.xiaozhi.test;
import com.xiaozhi.mapper.UserMapper;
import com.xiaozhi.pojo.User;
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.Reader;
public class TestByXiaoZhi {
public static void main(String[] args) throws IOException {
User user = new User("小智","123654789","陕西汉中");
Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.addUser(user);
sqlSession.commit();
sqlSession.close();
}
}
执行;这个也没写返回值类型; 那么去数据库看看吧;数据已经成功添加
整体搭建
MybatisX插件的简易安装
那个忍者小鸟的图标是使用了MybatisX 插件; 打开IDEA的设置;找到Plugins 插件管理;搜索MybatisX ,在线安装之后,重启IDEA即可使用了
|