在进行数据绑定之前需要做的通用工作如下(文件目录如下图):
1、建立好相应的数据表;
2、新建工程,加入mysql、JDBC、mybatis支持;
3、新建mybatis-config.xml文件,内容如下(我直接使用的application.yml配置数据库连接参数,在mybatis-config.xml中进行读取,也可直接写在mybatis-config.xml中,但启动工程时会有一个数据库连接错误之类的报错)
spring:
datasource:
url: jdbc:mysql://10.0.75.1:3306/mybatis?useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
以下mappers标签,注意我的目录结构
4、写好实体数据库对应的Bean;
package com.backman.trymybatis.bean;
public class Employee {
private Integer id;
private String last_name;
private String gender;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", last_name='" + last_name + '\'' +
", gender='" + gender + '\'' +
", email='" + email + '\'' +
'}';
}
}
方法一:传统方法
1、建立EmployeeMapper.xml,注意文件中的“com.backman.trymybatis.conf.EmployeeMapper”参看我的目录结构,这其实是这个XML文件对应的命名空间
下面文件中的“resultType”是指数据的封装规则,我当前是把查询出来的数据封装成employee对象
2、写测试方法,注意下面的“com.backman.trymybatis.conf.EmployeeMapper.selectEmployeeById”,对应的是EmployeeMapper.xml文件而不是“com.backman.trymybatis.mapper.EmployeeMapper”,也就是在传统方法下不需要建mapper.EmployeeMapper.class文件
传统方法中使用的是session.selectOne方法
package com.backman.trymybatis;
import com.backman.trymybatis.bean.Employee;
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.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.IOException;
import java.io.InputStream;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TrymybatisApplicationTests {
@Test
public void contextLoads() {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
try {
Employee employee = session.selectOne("com.backman.trymybatis.conf.EmployeeMapper.selectEmployeeById", 1);
System.out.println(employee);
} finally {
session.close();
}
}
}
方法二:mybatis官方推荐方法(使用接口的方式)
1、建立EmployeeMapper.class文件,注意我的目录结构,代码如下:
package com.backman.trymybatis.mapper;
import com.backman.trymybatis.bean.Employee;
public interface EmployeeMapper {
public Employee selectEmployeeById(Integer id);
}
2、建立EmployeeMapper.xml,注意文件中的“com.backman.trymybatis.mapper.EmployeeMapper”参看我的目录结构,这其实是对应的是mapper目录下的EmployeeMapper.class
3、编写测试方法,推荐方法中使用的是 mapper.selectEmployeeById方法,这个方法是在EmployeeMapper.class接口中的,与EmployeeMapper.xml中的select id="selectEmployeeById"是对应的
package com.backman.trymybatis;
import com.backman.trymybatis.bean.Employee;
import com.backman.trymybatis.mapper.EmployeeMapper;
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.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.IOException;
import java.io.InputStream;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TrymybatisApplicationTests {
@Test
public void contextLoads() {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
try {
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
Employee employee = mapper.selectEmployeeById(1);
System.out.println(employee);
} finally {
session.close();
}
}
}