博主目前大三,一个编程菜鸟,写博客是为了记录自己的学习成长
如果文章有错误的地方,请指正!我们大家一起学习一起进步
如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
前言
MyBatis 是一款优秀的支持定制化 SQL、存储过程以及高级映射的持久层框架。开发人员可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs映射成数据库中的记录,使得java操作数据库变得更加方便。
一、环境准备
我用maven、idea、mybatis的版本
maven : Maven 3.8.1
idea :IntelliJ IDEA 2020.3.4 (Ultimate Edition)
mybatis:mybatis 3.5.7
MySQL5.5.52
二、新建数据库
我的数据库名为:mybatis
在mybatis数据库新建一张表:user
CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
三、创建项目
打开idea,New Project新建一个maven项目,
这里填写项目名称,项目存放位置
接下来等待即可。
四、导入导 Mybatis用到的相关依赖
在项目的pom.xml 文件中<dependencies> </dependencies>中间加入以下依赖:
1、连接mysql的依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.5</version>
</dependency>
2、测试用到的junit依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
3、mybatis依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
4、由于maven构建的项目,有严格的约定,我们到时候写的相关配置可能不会被自动加载到target目录下,所以在这里,我们同时还要在pom.xml文件中加上以下内容
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
其中
- <resources> 标签用于指定项目资源文件的位置。
- “**” 表示任意级目录
- “*” 表示任意文件
添加依赖后pom.xml如下图
五、编写工具类、实体、接口、Mapper.xml配置文件
整个项目文件结构如下:
1、编写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-->
<configuration>
<!-- environments环境,可以配置多个default表示默认的环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 标准连接jdbc:mysql://localhost:3306/mybatis useSSL=true安全连接 “&”表示为& -->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<!-- 用户名和密码改成自己的 -->
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 注册-->
<mappers>
<mapper resource="asia/xiaojiang/mybatis/dao/UserMapper.xml"/>
</mappers>
</configuration>
上述代码中
- <configuration> 是整个 XML 配置文件的根节点,相当于是 MyBatis 的总管,MyBatis 所有的配置信息都会存放在它里面。
- <environments>可以配置 MyBatis 的多套运行环境,将 SQL 映射到多个不同的数据库上。
- <environment >用来配置 MyBatis 的一套运行环境,需指定运行环境 ID、事务管理、数据源配置等相关信息。我们可以通过配置多个 environment 标签来连接多个数据库,需要注意的是必须指定其中一个为默认运行环境(default指定)。
- <dataSource>用于配置数据库的连接属性,如驱动程序名称、URL、用户名和密码等。
- <mappers> 标签用于指定 MyBatis SQL 映射文件的路径
2、编写实体类
User.java
package asia.xiaojiang.mybatis.pojo;
/**
* @author
* @date 2022/3/3 17:34
*/
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
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 getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
3、接口
UserDao.java
package asia.xiaojiang.mybatis.dao;
import asia.xiaojiang.mybatis.pojo.User;
import java.util.List;
/**
* @author
* @date 2022/3/3 17:46
*/
public interface UserDao {
List<User>getUserlist();
}
4、Mapper.xml配置文件
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="asia.xiaojiang.mybatis.dao.UserDao">
<select id="getUserlist" resultType="asia.xiaojiang.mybatis.pojo.User">
select * from mybatis.user
</select>
</mapper>
上述代码中,<mapper> 元素是配置文件的根元素,它包含了namespace 属性,该属性值通常设置为“包名+SQL映射文件名”,用于指定唯一的命名空间。
子元素 <select>、<insert> 中的信息用于执行查询、添加操作。
六、测试
在Test测试文件目录下编写测试类
新建一个UserDaoTest.java测试类
package asia.xiaojiang.mybatis.dao;
import asia.xiaojiang.mybatis.pojo.User;
import asia.xiaojiang.mybatis.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
/**
* @author
* @date 2022/3/3 18:03
*/
public class UserDaoTest {
@Test
public void Test(){
// 获取 SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> userlist = mapper.getUserlist();
for (User user : userlist) {
System.out.println(user);
}
// 关闭sqlSession
sqlSession.close();
}
}
运行测试结果如下
结束!!!