1.添加MyBatis相关依赖
pom.xml配置
<!--MyBatis依赖-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--MySQL数据库连接-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
2.添加MyBatis配置文件
resources资源配置文件夹下添加mybatis.cfg.xml配置文件及jdbc.properties配置文件
jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/user?useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=root
mybatis.cfg.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="jdbc.properties"/>
<!-- 为JAVA Bean起类别名 -->
<typeAliases >
<!-- 别名方式1,一个一个的配置 type中放置的是类的全路径,alias中放置的是类别名
<typeAliases type="com.cx.beans.User" alias="User"/> -->
<!-- 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 -->
<package name="com.cx.bean"/>
</typeAliases>
<!-- 配置mybatis运行环境 -->
<environments default="mybatis">
<environment id="mybatis">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC" />
<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--映射文件路径-->
<mappers>
<!-- 告知映射文件方式1,一个一个的配置
<mapper resource="com.cx.mapper.UserMapper.xml"/>-->
<!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 -->
<package name="com.cx.mapper"/>
</mappers>
</configuration>
3.创建User类,DataBaseTools工具类,UserMapper映射类及UserMapper映射配置文件
User类
public class User {
private Integer id;
private String username;
private String password;
// GET/SET,构造函数及toString省略...
}
DataBaseTools工具类,获取MyBatis与数据库连接会话
public class DataBaseTools {
public static SqlSessionFactory sessionFactory;
static{
try {
//使用MyBatis提供的Resources类加载mybatis的配置文件
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
//构建sqlSession的工厂
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 创建能执行映射文件中sql的sqlSession
*/
public static SqlSession getSession(){
return sessionFactory.openSession();
}
}
UserMapper映射类
public interface UserMapper {
/**
* 根据ID查User
* @param id
* @return
*/
User getUserById(Integer id);
/**
* 查看所有User记录
* @return
*/
List<User> getUsers();
/**
* 添加一个User记录
* @param user
*/
void insert(User user);
/**
* 修改一条User记录
* @param user
*/
void update(User user);
}
UserMapper.xml映射配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 不写会报错 -->
<!DOCTYPE mapper PUBLIC
"-//mybatis.org/DTD Mapper 3.0"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cx.mapper.UserMapper">
<!--
resultType 返回类型
由于在mybatis.cfg.xml配置文件中配置了别名
<package name="com.cx.bean"/>
所以只需要填写类名称即可
-->
<select id="getUserById" resultType="User">
select * from t_user where id=#{id}
</select>
<select id="getUsers" resultType="User">
select * from t_user
</select>
<!--
useGeneratedKeys代表回填数据库自动生成的主键,默认为false,提升性能;
keyProperty代表主键名称
-->
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into t_user(username,password) values(#{username},#{password})
</insert>
<update id="update">
update t_user set username=#{username},password=#{password} where id=#{id}
</update>
</mapper>
4.测试MyBatis功能
MybatisTest测试类
public class MybatisTest {
/**
* 获取通道
*/
SqlSession sqlSession = DataBaseTools.getSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 测试内容如下
}
①根据ID查User记录
@Test
public void test01() {
User user = userMapper.getUserById(2);
System.out.println(user);
}
结果
②添加User记录
@Test
public void test02() {
User user = new User("赵六", "111");
System.out.println(user);
userMapper.insert(user);
// 事务提交,添加或是修改时需要事务提交后才能生效
sqlSession.commit();
System.out.println(user);
}
结果
③查看所有User记录
@Test
public void test03() {
List<User> userList = userMapper.getUsers();
for (User user : userList) {
System.out.println(user);
}
}
结果
④修改User记录
@Test
public void test04() {
User user = new User();
user.setId(2);
user.setUsername("李逍遥");
user.setPassword("111");
userMapper.update(user);
sqlSession.commit();
System.out.println(user);
}
结果