1. JDBC
1.1 整合JDBC
- 引入依赖
这里需要注意的是mysql驱动的版本,springboot使用的mysql驱动默认版本是8,由于使用5.7版本的mysql,指定mysql驱动的版本。
druid数据库连接池不受springboot版本的管理,需要自己指定版本号。
1 | <!--myql驱动--> |
- 编写配置文件,配置datasource
1 | spring: |
然后直接在类中注入JdbcTemplate即可。
1 |
|
1.2 JDBC多数据源
一个JdbcTemplate创建的时候需要一个datasource.
- 在配置文件中配置多个datasource
1 | spring: |
- 编写配置类配置JdbcTemplate
1 |
|
- 使用的时候注意注入的方式
1 |
|
2.Mybatis
2.1 整合Mybatis
- 引入依赖
mybatis不是springBoot官方提供的,需要指定版本号。
1 | <!--myql驱动--> |
- 配置文件配置datasource
1 | spring: |
- 编写Mapper interface
为了让Springboot扫描到,可以在每个接口上都标记@Mapper注解,也可以在启动上标注@MapperScan扫描接口所在的包。但两种方式只能选择其中一种。
1 |
|
1 |
|
- 编写mapper文件
mapper文件要注意的细节比较多。
mapper文件的存放位置可以在resources目录下,也可以在src目录下。
resources目录下
mapper.xml放在目录下
- 检查xml文件所在package名称是否和Mapper interface所在的包名一一对应
- xml文件的命名必须和Mapper interface的接口名称一一对应
如果想自定义mapper.xml配置文件的名称和存放位置,可以在配置文件中指定:
1 | mybatis: |
这样mapper.xml就可以存放在resources/mapper/目录下,且xml文件的命名随意了。
src目录下
将mapper.xml放在与StudentDao的相同目录下,报错如下:
1 | Invalid bound statement (not found): com.sise.demo.dao.StudentDao.getAllStudent |
这是由于maven打包的时候不会打包mapper.xml文件
因此我们需要在pom文件中指定该目录的资源文件。
1 | <build> |
2.2 MyBatis多数据源
- 编写配置文件datasource
1 | spring: |
- 编写配置类
Mybatis的配置需要SqlSessionFactory、SqlSessionTemplate.
1 |
|
1 |
|
2.3 打印sql
1 | spring: |
2.4 子查询映射
继承自BaseResultMap,Collections中对column取别名就可以,别名和sql中的别名一致。
查询的结果,由于resultMap的映射后,可能会与数据库中查询的行数不同。
1 | <resultMap id="BaseResultMap" type="com.ming.vhr.model.Menu" > |
3.JPA
3.1 整合JPA
- 引入依赖
1 | <!--myql驱动--> |
- 编写配置文件
1 | spring: |
如果不配置Dialect会出现以下错误:
1 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] |
- 提供实体类,提供接口继承JpaRepository
1 |
|
泛型的第一个参数是操作的实体类型,第二个参数是操作的实体类型的主键类型。
接口不需要加@Repository注解。
1 | public interface StudentDao extends JpaRepository<Student,Integer> { |
3.2 JPA多数据源的配置
- 配置文件
1 | spring: |
- 配置类
1 |
|
1 |
|
如果出现以下错误,可能是多个数据源未加@Primary注解。
1 | Parameter 0 of method localContainerEntityManagerFactoryBeanOne in com.sise.demo.configuration.JpaConfigurationOne required a bean of type 'org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder' that could not be found. |