Java开发学习(三十九)----SpringBoot整合mybatis
一、回顾Spring整合Mybatis
Spring
整合 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;
}
}
MybatisConfig
配置类定义
SqlSessionFactoryBean
定义映射配置
@Bean
public MapperScannerConfigurer getMapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.itheima.dao");
return msc;
}
@Bean
public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setTypeAliasesPackage("com.itheima.domain");
ssfb.setDataSource(dataSource);
return ssfb;
}
二、SpringBoot整合mybatis
2.1 创建模块
创建新模块,选择
Spring Initializr
,并配置模块相关基础信息
选择当前模块需要使用的技术集(MyBatis、MySQL)
2.2 定义实体类
在 com.itheima.domain
包下定义实体类 Book
,内容如下
public class Book {
private Integer id;
private String name;
private String type;
private String description;
//setter and getter
//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
,在该包下测试类,内容如下
@SpringBootTest
class Springboot08MybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void 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
接口改进为
@Mapper
public 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数据库端配置时区解决此问题
2.7 使用Druid数据源
现在我们并没有指定数据源,SpringBoot
有默认的数据源,我们也可以指定使用 Druid
数据源,按照以下步骤实现
导入
Druid
依赖<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>在
application.yml
配置文件配置可以通过
spring.datasource.type
来配置使用什么数据源。配置文件内容可以改进为spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
最新文章
- (八)map,filter,flatMap算子-Java&;Python版Spark
- appium常用方法整理
- 同步异步,阻塞非阻塞 和nginx的IO模型
- #ing# CSS细节注意点
- com.alibaba.fastjson.JSONObject学习
- Linux—fork函数学习笔记
- HDU 1498:50 years, 50 colors(二分图匹配)
- Windows phone 之手势识别(Drag)
- BZOJ 1296 粉刷匠
- win7开机密码忘记了
- Regex类
- MetaEditor中MQL使用方法
- linux下开启、关闭、重启mysql服务命令
- 字符转ASCII码
- ISDN简记
- 定位bug的基本要求
- Scrum Meeting 博客目录
- svn回复历史版本的操作方法
- Bootstrap的aria-label和aria-labelledby
- IP地址和域
热门文章
- 前端须知的 Cookie 知识
- Canvas 线性图形(一):路径
- 理想汽车 x JuiceFS:从 Hadoop 到云原生的演进与思考
- 【java】学习路径40-Buffer缓冲区输入流
- 使用man手册查看内核函数
- KingbaseES interval 分区表介绍
- KingbaseES R6 集群repmgr.conf参数&#39;recovery&#39;测试案例(二)
- 字节跳动 DanceCC 工具链系列之Xcode LLDB耗时监控统计方案
- RedHat Linux升级内核
- Kubernetes 监控--Prometheus