一、回顾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: root
2.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数据迁移常见场景攻略