创建第一个Mybatis工程
必要的环境
IDEA2022、MySQL5.5、Maven3.8.4
创建一个Maven工程
引入相关依赖
生成的目录结构
<!-- 引入必要的依赖 Mybatis MySQLConnector Junit单元测试-->
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.6.2</version>
<scope>test</scope>
</dependency>
</dependencies>
如果需要其他版本可到官网自取
创建Mybatis子模块
src目录可以删掉,我们创建一个子模块。
直接下一步
新增子模块后的目录结构
构建项目
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>
<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/test?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 在这里注册自己接口的Mapper -->
<mappers>
<mapper resource="com/test/dao/UserMapper.xml"/>
</mappers>
</configuration>
方法二
在这里可以使用另外一种方法,将数据库连接的配置文件和Mybatis的核心配置文件分开
<?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"></properties>
<!-- 默认运行环境为development -->
<environments default="development">
<!-- 运行环境 可以有多个,用id区分 -->
<environment id="development">
<!-- 事务管理选择JDBC -->
<transactionManager type="JDBC"/>
<!-- 数据源类型选择连接池 使用${xxx} 取配置文件中的值-->
<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>
<!-- 在这里注册自己接口的Mapper -->
<mappers>
<!-- 使用resouce属性 指向Mapper配置文件 -->
<mapper resource="com/test/dao/UserMapper.xml"/>
<!-- 使用class属性 指向Mapper配置文件 需要配置文件和接口同名 -->
<!-- <mapper class="com.test.dao.UserMapper"/> -->
<!-- 使用package属性 扫描包 需要配置文件和接口同名 -->
<!-- <mapper package="com.test.dao"/> -->
</mappers>
</configuration>
db.properties 数据库连接配置文件
数据库连接的基本参数
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=root
MybatisUtil.java
用于获取SqlSession的工具类
//SqlSessionFactory实例
private static SqlSessionFactory sqlSessionFactory;
static {
//获取sqlSessionFactory
try{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
}catch (Exception ex) {
ex.printStackTrace();
}
}
//获取sqlSession实例
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
// 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
User.java
MySQL中需要存在一张User表,实体类属性与其相同
public class User {
private int id;
private String name;
private String pw;
public User() {
}
public User(int id, String name, String pw) {
this.id = id;
this.name = name;
this.pw = pw;
}
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 getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pw='" + pw + '\'' +
'}';
}
}
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/Dao接口 接口的全限定名-->
<mapper namespace="com.test.dao.UserMapper">
<!-- 查询 id为接口中的方法 返回结果类型为User实体类 里面写查询语句 -->
<select id="getListUser" resultType="com.test.pojo.User">
select * from user
</select>
</mapper>
UserMapper.java
public interface UserMapper {
//在这里写对数据操作方法
public List<User> getListUser();
}
UserMapperTest.java
public class UserMapperTest {
@Test
public void mapperTest() {
//获取Session实例
SqlSession sqlSession = MybatisUtil.getSqlSession();
//获取mapper的方法1
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//获取实例
List<User> userList = userMapper.getListUser();
for(User user : userList) {
System.out.println(user);
}
//关闭session
sqlSession.close();
}
}
子工程pom.xml文件的更改
新增build
<!-- 用于Maven导出资源文件 -->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
执行结果
其他的问题
中间遇到的问题我大概整理了下 放在另一篇文章里
点这里