一、搭建MyBatis
1.开发环境
IDEA version : 2021.2.2
mysql version :8.0.23
mybatis version : 3.5.2
maven version : 3.5.7
2.创建maven工程
next->Name(存放路径)->groupID(com.lyc.mybatis)->finish
加入依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
3.创建数据库连接信息配置文件
在项目中的src/main/resources目录下创建db.properties
driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&\
characterEncoding=utf8&useUnicode=true&useSSL=false
username = root
password = 123456
4.创建MyBatis的核心配置文件
在项目中的src/main/resources目录下创建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="db.properties"/>
<!--设置连接数据库的环境-->
<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="mappers/UserMapper.xml"/>
</mappers>
</configuration>
参数详细:
<?xml version="1.0" encoding="UTF-8" ?> xml的版本号
<!DOCTYPE configuration mybatis中的约束 dtd文件
PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
configuration 根标签
environments 可嵌套多个单数标签 <!--设置连接数据库的环境-->
<mappers> <!--引入映射文件-->
<transactionManager type="JDBC"/> 事务的管理方式以jdbc的方式进行管理
<dataSource type="POOLED"> 数据库连接池 下一次使用直接调用
5.创建POJO实体
这是我们的表中的数据 跟实体类的属性要一致(默认的映射规则)->为属性名赋值
在src/main/java 目录下创建com.lyc.mybatis.pojo包 在pojo包下创建User类 该类用于封装User对象的属性 如下:
public class User {
private int uid;
private String uname;
private int uage;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public int getUage() {
return uage;
}
public void setUage(int uage) {
this.uage = uage;
}
6.创建mapper接口
MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要
提供实现类。
在src/main/java/com.lyc.mybatis下创建mapper文件夹
在文件夹下创建UserMapper接口
int insertUser();
7.创建映射文件UserMapper.xml
在src/main/resources下创建一个mappers文件夹 在文件下创建映射文件UserMapper.xml
用于配置真正的sql与java对象之间的映射
1.MyBatis映射文件用于编写SQL,访问以及操作表中的数据
2、MyBatis中可以面向接口操作数据,要保证两个一致:
a>mapper接口的全类名和映射文件的命名空间(namespace)保持一致
b>mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致
<?xml version="1.0" encoding="UTF-8"?>
<!--sql与java之间的映射 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lyc.mybatis.mapper.UserMapper">
<insert id="insertUser">
insert into users values (4,'王五',19)
</insert>
</mapper>
映射文件的命名规则:
表所对应的实体类的类名+Mapper.xml
例如:表t_user,映射的实体类为Users,所对应的映射文件为UsersMapper.xml
8.测试
import com.lyc.mybatis.mapper.UserMapper;
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 MapperTest01 {
@Test
public void TestMapper() throws IOException {
//读取MyBatis的核心配置文件 InputStream is = Resources.g
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
////通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,生产SqlSession对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
//调用UserMapper接口中的方法,就可以根据UserMapper的全类名匹配元素文件,通过调用的方法名匹配 映射文件中的SQL标 签,并执行标签中的SQL语句
int result = mapper.insertUser();
//事务提交
session.commit();
System.out.println("result"+result);
}
}