1、什么是MyBatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2、注入相关Maven依赖
<!--Mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!--Mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<!--junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
3、MyBatis核心配置文件
mybatisConfig.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>
<!--配置连接数据库的环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<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="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
4、创建properties配置文件
jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_Cinema
jdbc.username=root
jdbc.password=123456
5、创建mapper接口
moviesMapper.java
package com.chao.LogoDemo.mapper;
public interface moviesMapper {
/*
* Mybatis面向接口有两个一致
* 1.对应的Mapper(映射文件) 配置文件的namespace应该与Mapper的接口文件全类名一致
* 2.对应的Mapper(映射文件) 配置文件的id与Mapper的接口方法名一致
* */
/*
* 添加电影,返回值int为受影响的行数
* */
int insertMovie();
}
6、创建映射文件
moviesMapper.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.chao.LogoDemo.mapper.moviesMapper">
<insert id="insertMovie">
insert into Movies values (null,'倚天屠龙记','张无忌',5,200,45,12);
</insert>
7、测试MyBatis
TestMybatis.java
package com.chao.LogoTest;
import com.chao.LogoDemo.mapper.moviesMapper;
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.io.InputStream;
public class MovieTest {
/*
* 默认不提交事务,在openSession方法里设为true为自动提交事务
* */
@Test
public void mybatisTest() throws IOException {
//加载配置文件
InputStream is = Resources.getResourceAsStream("mybatisConfig.xml");
//获取SqlSessionFactoryBuilder
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取SqlSessionFactory
SqlSessionFactory SqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取SqlSession
SqlSession sqlSession = SqlSessionFactory.openSession(true);
//获取Mapper接口对象
moviesMapper mapper = sqlSession.getMapper(moviesMapper.class);
//测试功能
int result = mapper.insertMovie();
//提交事务
// sqlSession.commit();
System.out.println("受影响的行数:" + result);
}
}java
8、注意事项
-
Mybatis面向接口有两个一致
对应的Mapper(映射文件) 配置文件的namespace应该与Mapper的接口文件全类名一致
对应的Mapper(映射文件) 配置文件的id与Mapper的接口方法名一致
-
Mybatis中pojo,Mapper接口,Mapper映射文件都对应Mysql数据库中的一个表
-
Mybatis核心配置文件中resource的路径是"/",不是"."
-
Mybatis测试类中SqlSession默认不提交sql事务,需要在openSession方法参数里设为True,自动提交sql事务
-
Mapper映射文件下的查询功能标签必须设置resultType或resultMap
resultType:设置默认的映射关系
resultMap:设置自定义的映射关系(Mysql条目名类型与pojo属性类型不一致时)