springBoot-mybatis整合
写在前面,自从有了逆向工程,持久层的代码,也就是Dao的接口及实现类已经很久没有写了,今天接触springBoot-mybatis后,查询的结果一直为null,找了半天没有找到结果,最后才突然警醒,麻蛋原来是实体类和数据库表字段不对应,无法封装,所以一直是null
####0.springBoot-mybatis整合之环境配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xcl</groupId>
<artifactId>springboot_mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--web起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- MySQL连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</project>
1.springBoot-mybatis整合之数据库表–建表语句
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `tb_student`;
CREATE TABLE `tb_student` (
`tb_id` BIGINT(11) NOT NULL AUTO_INCREMENT,
`tb_name` VARCHAR(50) DEFAULT NULL,
`tn_age` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`tb_id`)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
####2.springBoot-mybatis整合之实体类
package com.xcl.domain;
import java.io.Serializable;
public class Student implements Serializable{
private Long stuId;
private String stuName;
private String stuAge;
public Student() {
}
@Override
public String toString() {
return "Student{" +
"stuId=" + stuId +
", stuName='" + stuName + '\'' +
", stuAge='" + stuAge + '\'' +
'}';
}
public Student(String stuName, String stuAge) {this.stuName = stuName; this.stuAge = stuAge;}
public Long getStuId() {return stuId;}
public void setStuId(Long stuId) {this.stuId = stuId; }
public String getStuName() {return stuName;}
public void setStuName(String stuName) { this.stuName = stuName;}
public String getStuAge() {return stuAge;}
public void setStuAge(String stuAge) { this.stuAge = stuAge;}
}
####3.springBoot-mybatis整合之dao接口
package com.xcl.dao;
import com.xcl.domain.Student;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface StudentDao {
/**
* 发现一个对象
* @param id
* @return
*/
public Student findOne(Long id);
List<Student> findAll();
}
####4.springBoot-mybatis整合之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="com.xcl.dao.StudentDao">
<resultMap id="mmp" type="com.xcl.domain.Student">//实体与数据库表字段不对应,需要配置映射
<id property="stuId" column="stu_id"></id>
<result property="stuName" column="stu_name"></result>
<result property="stuAge" column="stu_age"></result>
</resultMap>
<select id="findOne" parameterType="java.lang.Long" resultMap="mmp">
select * from tb_student where stu_id = #{id} ;
</select>
<select id="findAll" resultType="student">
SELECT * FROM tb_student;
</select>
</mapper>
####5.pringBoot-mybatis整合之配置文件application.properties
#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boot?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
#spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=com.xcl.domain
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:com.xcl.dao/*Dao.xml
####6.pringBoot-mybatis整合之测试
package com.xcl.test;
import com.xcl.MySpringBootApplication;
import com.xcl.dao.StudentDao;
import com.xcl.domain.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import java.util.Optional;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MySpringBootApplication.class)
public class StudentDaoTest {
@Autowired
private StudentDao studentDao;
/**
* 测试查询一个
*/
@Test
public void test02() {
Student student = studentDao.findOne(1L);
System.out.println("student = " + student);
}
/**
*测试查询全部
*/
@Test
public void test01() {
List<Student> all = studentDao.findAll();
System.out.println(all);
}
}
恭喜你完成了整合,可以开始你的代码之旅了!!!