一、回顾Spring整合MybatisSpring 整合 Mybatis 需要定义很多配置类
SpringConfig配置类
- 导入 
JdbcConfig配置类
 - 导入 
MybatisConfig配置类
@Configuration@ComponentScan("com.itheima")@PropertySource("classpath:jdbc.properties")@Import({JdbcConfig.class,MyBatisConfig.class})public class SpringConfig {}? 
- 导入 
 JdbcConfig配置类
- 定义数据源(加载properties配置项:driver、url、username、password)
public class JdbcConfig { @Value("${jdbc.driver}") private String driver; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String userName; @Value("${jdbc.password}") private String password;? @Bean public DataSource getDataSource(){ DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName(driver); ds.setUrl(url); ds.setUsername(userName); ds.setPassword(password); return ds; }} 
- 定义数据源(加载properties配置项:driver、url、username、password)
 MybatisConfig配置类
- 定义 
SqlSessionFactoryBean
 - 定义映射配置
@Beanpublic MapperScannerConfigurer getMapperScannerConfigurer(){ MapperScannerConfigurer msc = new MapperScannerConfigurer(); msc.setBasePackage("com.itheima.dao"); return msc;}?@Beanpublic SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){ SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean(); ssfb.setTypeAliasesPackage("com.itheima.domain"); ssfb.setDataSource(dataSource); return ssfb;}? 
- 定义 
 
- 创建新模块,选择 
Spring Initializr,并配置模块相关基础信息
 

文章插图
- 选择当前模块需要使用的技术集(MyBatis、MySQL)

文章插图
 
com.itheima.domain 包下定义实体类 Book , 内容如下public class Book {    private Integer id;    private String name;    private String type;    private String description;        //setter andgetter        //toString}2.3 定义dao接口在 com.itheima.dao 包下定义 BookDao 接口,内容如下public interface BookDao {    @Select("select * from tbl_book where id = #{id}")    public Book getById(Integer id);}2.4 定义测试类在 test/java 下定义包 com.itheima,在该包下测试类 , 内容如下【三十九 Java开发学习----SpringBoot整合mybatis】
@SpringBootTestclass Springboot08MybatisApplicationTests {?@Autowiredprivate BookDao bookDao;?@Testvoid testGetById() {Book book = bookDao.getById(1);System.out.println(book);}}2.5 编写配置我们代码中并没有指定连接哪儿个数据库,用户名是什么 , 密码是什么 。所以这部分需要在 SpringBoot 的配置文件中进行配合 。在
application.yml 配置文件中配置如下内容spring:datasource:  driver-class-name: com.mysql.jdbc.Driver  url: jdbc:mysql://localhost:3306/ssm_db  username: root  password: root2.6 测试运行测试方法,我们会看到如下错误信息
文章插图
错误信息显示在
Spring 容器中没有 BookDao 类型的 bean 。为什么会出现这种情况呢?原因是
Mybatis 会扫描接口并创建接口的代码对象交给 Spring 管理 , 但是现在并没有告诉 Mybatis 哪个是 dao 接口 。而我们要解决这个问题需要在BookDao 接口上使用 @Mapper  , BookDao 接口改进为@Mapperpublic interface BookDao {    @Select("select * from tbl_book where id = #{id}")    public Book getById(Integer id);}注意:
SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC,或在MySQL数据库端配置时区解决此问题推荐阅读
- JavaSPI详解
 - day04-JavaScript01
 - Java安全之Tomcat6 Filter内存马
 - 沁恒CH32V003F4P6 开发板上手报告和Win10环境配置
 - visual studio插件开发-Menu
 - JavaScript的异步编程之Promise
 - Git新技能-stash操作
 - 四十八 SpringCloud微服务实战——搭建企业级开发框架:【移动开发】整合uni-app搭建移动端快速开发框架-使用第三方UI框架
 - 17 基于SqlSugar的开发框架循序渐进介绍-- 基于CSRedis实现缓存的处理
 - 京东云开发者|京东云RDS数据迁移常见场景攻略
 
