开发环境
-
apache-maven-3.8.2
-
mysqlmysql5.7
-
jdk 1.8
-
IDEA
1 简介
1.1、什么是myBatis
-
MyBatis 是一款优秀的持久层框架,
-
它支持自定义 SQL、存储过程以及高级映射。
-
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
-
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
-
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。
-
2013年11月迁移到Github。
如何获取MyBatis?
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
-
GitHub:
1.2、持久化
数据持久化:
-
持久化就是将程序的数据在持久状态和瞬时状态转化的过程.
-
内存:断电即失
-
数据库(JDBC)、io文件持久化
1.3、持久层
DAO层 、Service层、Controller层
-
完成持久化工作的代码块
-
层界限十分明显
1.4、为什么要使用myBatista
-
简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
-
灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
-
解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
-
提供映射标签,支持对象与数据库的ORM字段关系映射
-
提供对象关系映射标签,支持对象关系组建维护
-
提供XML标签,支持编写动态sql。
创建数据库
create database `mybatis`;
use `mybatis`;
create data `user`(
`id` int(20) not null primary key,
`name` varchar(30) not null,
`pwd` varchar(30) not null
)engine=innodb default charset=utf8;
insert into `user`(`id`,`name`,`pwd`) value (1,'test01','123456');
2、搭建第一个myBatista程序
-
创建一个普通的maven项目
-
删除src目录,作为一个父工程使用
一、 导入依赖
<!--导入依赖-->
<dependencies>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--由于maven项目约定大于配置,idea不会将java源目录中的资源文件加载到项目中。-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
二、 创建一个新模块
1. 编写mybatis的核心配置文件 mybatis-config.xml
```xml
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<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?useSSL=false&useUnicode=true&characterEncoding=UTF8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/zsq/mapper/UserMapper.xml" />
</mappers>
</configuration>
```
2. 编写myBatis工具MybatisUntil.class
```java
package com.zsq.untils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import javax.annotation.Resources;
import java.io.InputStream;
/**
* 工具类
*/
public class MybatisUntil {
// 从 SqlSessionFactory 中获取 SqlSession
private static SqlSessionFactory sqlSessionFactory;
static {
// 读取配置
String resource = "/mybatis-config.xml";
InputStream inputStream = Resources.class.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
// 获取session
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
```
#### 3. 编写实体类 “`java package com.zsq.entity;
public class User {
private int id;
private String name;
private String pws;
public User() {
}
public User(int id, String name, String pws) {
this.id = id;
this.name = name;
this.pws = pws;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPws() {
return pws;
}
public void setPws(String pws) {
this.pws = pws;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '/'' +
", pws='" + pws + '/'' +
'}';
}
}
```
4. 定义mapper接口
“`java package com.zsq.mapper;
import com.zsq.entity.User;
import java.util.List;
public interface UserMapper {
List<User> getAllUser();
User getOneUser();
}
```
5. 接口实现类
xml <?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zsq.mapper.UserMapper"> <select id="getAllUser" resultType="com.zsq.entity.User"> select * from `user` </select> </mapper>
6. 核心配置里添加接口绑定
xml <mappers> <mapper resource="com/zsq/mapper/UserMapper.xml" /> </mappers>
7. 测试
```java
import com.zsq.entity.User;
import com.zsq.mapper.UserMapper;
import com.zsq.untils.MybatisUntil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class Test01 {
@Test
public void selectUserListTest(){
SqlSession sqlSession = MybatisUntil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> allUser = mapper.getAllUser();
for (User user : allUser) {
System.out.println(user.toString());
}
sqlSession.close();
}
}
```
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/288858.html