我看了一下网上大多数文章对于mybatis的连接都没有一个清晰的说明,大多数都很复杂
这里我简单总结一下
首先我们需要导入相关的mybatis的依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
这里大家需要注意一点 MYSQL的版本必须和mysql-connector-java的依赖版本相同 不然会在连接时报错 博主是用的8.0的mysql所以这里是8.0的版本
其次我们在resources文件下面创建一个application.yaml的文件做好如图所示的配置
server:
port: 8081
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password:
其次,到了这一步大家就可以测试是否mysql连接成功了
@SpringBootTest
class WebApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() {
System.out.println(dataSource.getClass());
try {
System.out.println(dataSource.getConnection());
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
测试成功会返回一段字符串,并且没有爆红就说明已经连接成功了
然后 我们就需要将查询出来的结果做一个关系映射在我们的实例上面
我们先创建一个user类
package project.Pojo.users;
import java.util.Date;
public class user {
private int id;
private String account;
private String password;
private String email;
private Date create_time;
private Date update_time;
public user(){}
public user(int id, String account, String password, String email, Date create_time, Date update_time) {
this.id = id;
this.account = account;
this.password = password;
this.email = email;
this.create_time = create_time;
this.update_time = update_time;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
@Override
public String toString() {
return "user{" +
"id=" + id +
", account='" + account + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
", create_time=" + create_time +
", update_time=" + update_time +
'}';
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getCreate_time() {
return create_time;
}
public void setCreate_time(Date create_time) {
this.create_time = create_time;
}
public Date getUpdate_time() {
return update_time;
}
public void setUpdate_time(Date update_time) {
this.update_time = update_time;
}
}
这里大家可以使用lombok来简化代码,但我觉得这种方式不便于维护,取决于大家的选择
然后 我们在项目下面建一个mapper包里面建一个mapper类,如图
mapper测试源代码如图 这里大家可以用注解的方式写sql但是博主不推荐,因为动态sql就不能使用这种方式,相当于sql是写死的了
package project.userMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import project.Pojo.users.user;
import java.util.List;
//这个注解表示一个mybatis的mapper类
@Mapper
//类似于component
@Repository
public interface userMapper {
List<user> queryUserList();
user userById(int id );
}
然后我们还要在resources文件下创建一个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="project.userMapper.userMapper">
<select id="queryUserList" resultType="user">
select * from user
</select>
</mapper>
这里里面需要注意一下 namespace里面对应的是具体的mapper类,resultType这里是返回的所需要的对象类型,这里是需要包的全路径名,这里我在yaml里面设置了别名的方式所以可以直接用
最后再将mybatis整合到spring中
package project;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import project.Pojo.admins.admin;
import project.Pojo.users.user;
import project.userMapper.userMapper;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.List;
@SpringBootTest
class WebApplicationTests {
@Autowired
userMapper userMapper;
@Test
void contextLoads() {
List<user> users = userMapper.queryUserList();
System.out.println(users);
}
}
开始测试!
对应结果如图。