MyBatis让我们操作数据库变得和数据库客户端一样简单,以下是我学习MyBatis入门后的一个简单小实例
1, 使用XML文件配置数据库连接和Mybatis mapper.
要操作数据库,肯定是要配置数据库相关的信息, 我这里文件名为mybatis-config.xml,放在resources目录下
<?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>
<!--
配置连接数据库相关的配置
-->
//输出SQL等相关信息到控制台
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/library?serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="xxxx"/>
</dataSource>
</environment>
</environments>
//具体操作数据库的配置文件,XML方式,其实很多操作注解也行
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
2,选取/创建一个数据库表来完成这个实例, Java部分的内容如下:
2.1 创建表对应的POJO
package com.cd.mybatis.pojo;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String name;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
}
public User(Integer id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
2.2 创建user表对应的接口来实现对表的操作
Mybatis的实现类是Mybatis框架实现的,貌似是用动态代理的模式来实现的,我们就不用管了,重点在接口和XML配置实际应用
package com.cd.mybatis.mapper;
import com.cd.pojo.User;
public interface UserMapper {
public User getUserById(Integer id);
public void deleteUserById(Integer id);
}
2.3 创建Mapper来定义接口的具体实现
<?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.cd.mybatis.mapper.UserMapper">
<select id="getUserById" resultType="com.cd.mybatis.pojo.User" parameterType="int">
select * from users where id = #{id}
</select>
<delete id="deleteUserById">
delete from users where id = #{id}
</delete>
</mapper>
3,创建测试类看看是否能实现数据库访问
package com.cd.mybatis;
import com.cd.mybatis.mapper.UserMapper;
import com.cd.mybatis.pojo.User;
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.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
public class TestMybatis {
@Test
public void testGetUserById() throws IOException {
//获取mybatis配置文件的流
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//通过配置文件生成对象
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(in);
//生成SQL Session对象
SqlSession session = build.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
}
}
控制台显示数据