配置h2默认数据库
因为h2是内嵌式数据库,所以只要引入相关依赖,我们就可以在不使用任何配置数据库的情况下运行Spring Boot工程了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
配置MySQL的依赖(需要删除对hibernate的依赖包)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
配置MySQL数据源
spring.datasource.url=jdbc:mysql://localhost:3306/chapter5
spring.datasource.username=root
spring.datasource.password=123456
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#最大等待连接中的数量, 设 0 为没有限制
#根据需要配置数据源的属性,因为使用的是Tomcat自带的数据库连接池,所以可以看到很多配置的代码中带有tomcat字样。
spring.datasource.tomcat.max-idle=10
#最大连接活动数
spring.datasource.tomcat.max-active=50
#最大等待毫秒数, 单位为 ms, 超过时间会出错误信息
spring.datasource.tomcat.max-wait=10000
#数据库连接池初始化连接数
spring.datasource.tomcat.initial-size=5
虽然这里注释掉了驱动类的配置,但是它还是可以连接数据源的,这是因为Spring Boot会尽可能地去判断数据源是什么类型的,然后根据其默认的情况去匹配驱动类。在它不能匹配的情况下,你可以明确地配置它,这样就不会使用默认的驱动类了。
整合MyBatis框架
MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
引入关于MyBatis的starter
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
MyBatis的配置
mybatis配置结构图
-
properties(属性):属性文件在实际应用中一般采用Spring进行配置,而不是MyBatis,所以这里不再介绍它的使用。
-
settings(设置):它的配置将改变MyBatis的底层行为,可以配置映射规则,如自动映射和驼峰映射、执行器(Executor)类型、缓存等内容,比较复杂,具体配置项可参考MyBatis官方网站(http://www.mybatis.org/mybatis-3/zh/configuration.html#settings)。
-
** typeAliases(类型别名)**:因为使用类全限定名会比较长,所以MyBatis会对常用的类提供默认的别名,此外还允许我们通过typeAliases配置自定义的别名。
-
typeHandlers(类型处理器):这是MyBatis的重要配置之一,在MyBatis写入和读取数据库的过程中对于不同类型的数据(对于Java是JavaType,对于数据库则是JdbcType)进行自定义转换,在大部分的情况下我们不需要使用自定义的typeHandler,因为在MyBatis自身就已经定义了比较多的typeHandler,MyBatis会自动识别javaType和jdbcType,从而实现各种类型的转换。一般来说,typeHandler的使用集中在枚举类型上。
-
objectFactory(对象工厂):这是一个在MyBatis生成返回的POJO时会调用的工厂类。一般我们使用MyBatis默认提供的对象工厂类(DefaultObjectFactory)就可以了,而不需要任何配置,所以本书不讨论它。
-
plugins(插件):有时候也称为拦截器,是MyBatis最强大也是最危险的组件,它通过动态代理和责任链模式来完成,可以修改MyBatis底层的实现功能。掌握它需要比较多的MyBatis知识,可参考相关的书籍和资料。
-
environments(数据库环境):可以配置数据库连接内容和事务。一般而言,这些交由Spring托管,所以不再讨论它。
-
databaseIdProvider(数据库厂商标识):允许MyBatis配置多类型数据库支持,不常用,不再讨论它的使用。
-
mappers(映射器):是MyBatis最核心的组件,它提供SQL和POJO映射关系,这是MyBatis开发的核心
MyBatis常用的配置
#定义Mapper的XML路径
mybatis.mapper-locations=......
#定义别名扫描的包,需要与@Alias联合使用
mybatis.type-aliases-package=......
#MyBatis配置文件,当你的配置比较复杂的时候,可以使用它
mybatis.config-location=......
#配置MyBaits插件(拦截器)
mybatis.configuration.interceptors= ......
#具体类需要与@MappedJdbcTypes联合使用
mybatis.type-handlers-package=......
#级联延迟加载属性配置
mybatis.configuration.aggressive-lazy-loading=......
#执行器(Executor),可以配置SIMPLE, REUSE, BATCH,默认为SIMPLE
mybatis.executor-type=......