【黑马程序员2022新版SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术】
Spring 整合 Mybatis 需要定义很多配置类:
SpringConfig 配置类
JdbcConfig 配置类
定义数据源(加载properties配置项:driver、url、username、password)
MybatisConfig 配置类
定义 SqlSessionFactoryBean
定义映射配置
勾选当前模块需要使用的技术集
直接创建
package com.dingjiaxiong.domain;
/**
* ClassName: Book
* date: 2022/9/21 19:53
*
* @author DingJiaxiong
*/
public class Book {
private Integer id;
private String name;
private String type;
private String description;
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 getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", type='" + type + '\'' +
", description='" + description + '\'' +
'}';
}
}
package com.dingjiaxiong.dao;
import com.dingjiaxiong.domain.Book;
import org.apache.ibatis.annotations.Select;
/**
* ClassName: BookDao
* date: 2022/9/21 19:54
*
* @author DingJiaxiong
*/
public interface BookDao {
@Select("select * from tbl_book where id = #{id}")
public Book getById(Integer id);
}
package com.dingjiaxiong;
import com.dingjiaxiong.dao.BookDao;
import com.dingjiaxiong.domain.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot08MybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void testGetById(){
Book book = bookDao.getById(1);
System.out.println(book);
}
}
在 application.yml 配置文件中配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: 200039
可以看到报错了
错误信息显示在 Spring 容器中没有 BookDao 类型的 bean 。
原因是 Mybatis 会扫描接口并创建接口的代码对象交给 Spring 管理,但是现在并没有告诉 Mybatis 哪个是 dao 接口。而要解决这个问题需要在 BookDao 接口上使用 @Mapper , BookDao 接口改进为
注意:SpringBoot 版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区
jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC ,或在MySQL数据库端配置时区解决此问题
导入 Druid 依赖
在 application.yml 配置文件配置
可以通过 spring.datasource.type 来配置使用什么数据源。
配个时区
再试一次
OK。