什么是Mybatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
Do it
1.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.imikasa</groupId>
<artifactId>mybatis-test01</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.4.2</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</project>
编写完pojo
2.开始配置Mybatis的配置文件
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>
<properties resource="MySql.properties"></properties><!-- 此配置是加载数据源 -->
<typeAliases>
<typeAlias type="com.imikasa.pojo.Hero" alias="hero"/><!-- 给全限定名定义简便别名,方便映射文件操作-->
</typeAliases>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="myMapper/HeroMapper.xml"/><!-- 配置映射文件 -->
</mappers>
</configuration>
MySql.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3301/study?serverTimezone=UTC
username=root
password=1234
4.映射文件
<?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="myMapper">
<select id="findAll" resultType="com.imikasa.pojo.Hero">
select * from hero
</select>
</mapper>
5.测试
package com.imikasa.test;
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 org.junit.Test;
import java.io.IOException;
import java.util.List;
public class MyTestMybatis {
@Test
public void test() throws IOException {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
try(SqlSession sqlSession = sqlSessionFactory.openSession()){
final List<Object> findAll = sqlSession.selectList("findAll");
System.out.println(findAll);
}
}
}
注:openSession(boolean),可以设置事务自动提交
1.接口代理方式(mapper)
我们首先看以前的做法,在全局配置文件 mybatis-configuration.xml 通过 标签来加载映射文件,那么如果我们项目足够大,有很多映射文件呢,难道我们每一个映射文件都这样加载吗,这样肯定是不行的,那么我们就需要使用 mapper 接口来加载映射文件
规范:
- 映射文件中的namespace与mapper接口中的全限定名相同
- 映射文件中每个操作的id与mapper接口中的方法名相同
- 映射文件中每个parameterType的类型与mapper接口的参数类型相同
- 映射文件的resultType与mapper接口中的方法返回类型相同(集合按照泛型的)
2.测试代码
通过SqlSession对象获取mapper接口
//获取mapper接口
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.selectUserById(1);
JUST ONE......
网友评论