4. 配置项目
我们配置了依赖和插件后,需要把一些对应的项目配置也写好,这样才能让这个项目正常运行起来。
配置文件的话,我目前选择比较好用的yml格式的application.yml,小伙伴们也可以把项目中的application.properties重命名一下,改成application.yml。
- 数据库配置
spring: # 数据库链接配置 datasource: url: jdbc:mysql://数据库ip:数据库端口/数据库名称?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver username: 数据库用户名 password: 数据库密码 # 链接池 type: com.alibaba.druid.pool.DruidDataSource druid: # 链接池初始化大小 initial-size: 8 # 最大活跃数 max-active: 16 # 最小空闲数 min-idle: 1 # 最大等待时间 max-wait: 60000 复制代码
- 博客中不方便对外透露我自己的数据库相关ip、端口等数据,所以就用中文替代,小伙伴可以根据自己的数据库的配置作出对应的修改。
配置完毕后,我们的项目就可以正确链接数据库,并且也已经使用了链接池化的功能了。 - mybatis配置
# mybatis配置 mybatis: check-config-location: true # mybatis框架配置文件,对mybatis的生命周期起作用 config-location: "classpath:mybatis/mybatis-config.xml" # 配置xml路径 mapper-locations: "classpath:mybatis/mapper/*Mapper.xml" # 配置model包路径 type-aliases-package: "com.example.awesomespring.dao.entity.*" 复制代码
- 此外,根据以上配置,我们还需要在resources创建mybatis文件夹,以便我们存放对应的mybatis-config.xml文件以及Mapper.xml文件;
mybatis-config.xml文件是用来配置mybatis框架如何运行的配置;
Mapper.xml文件是后续通过mybatis-generator插件自动生成的操作数据库的配置文件;
mybatis-config.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 全局的映射器启用或禁用缓存。 --> <setting name="cacheEnabled" value="true"/> <!-- 全局启用或禁用延迟加载 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 允许或不允许多种结果集从一个单独的语句中返回 --> <setting name="multipleResultSetsEnabled" value="true"/> <!-- 使用列标签代替列名 --> <setting name="useColumnLabel" value="true"/> <!-- 允许JDBC支持生成的键 --> <setting name="useGeneratedKeys" value="false"/> <!-- 配置默认的执行器 --> <setting name="defaultExecutorType" value="SIMPLE"/> <!-- 设置超时时间 --> <setting name="defaultStatementTimeout" value="60"/> <!-- 设置驼峰标识 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <plugins> <!-- 分页插件 --> <plugin interceptor="com.github.pagehelper.PageInterceptor" /> </plugins> </configuration> 复制代码
- mybatis-generator配置
前面我们在添加mybatis-generator插件的时候就已经指定了相关配置文件的位置,那么我们就把generatorConfig.xml创建出来
generatorConfig.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!--参数配置--> <properties resource="mybatis/generator/generator.properties"/> <!-- 配置mysql 驱动jar包路径.用了绝对路径 --> <classPathEntry location="${classPathEntry}" /> <context id="mysql_tables" targetRuntime="MyBatis3"> <!-- 防止生成的代码中有很多注释,加入下面的配置控制 --> <commentGenerator> <property name="suppressAllComments" value="true" /> <property name="suppressDate" value="true" /> </commentGenerator> <!-- 数据库连接 --> <jdbcConnection driverClass="${driverClass}" connectionURL="${connectionURL}" userId="${userId}" password="${password}"> </jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 数据表对应的model层 --> <javaModelGenerator targetPackage="${modelTargetPackage}" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- sql mapper 映射配置文件 --> <sqlMapGenerator targetPackage="${sqlMapTargetPackage}" targetProject="src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- mybatis3中的mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="${javaClientTargetPackage}" targetProject="src/main/java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 数据表进行生成操作 schema:相当于库名; tableName:表名; domainObjectName:对应的DO --> <table schema="${schema}" tableName="${tableName}" domainObjectName="${domainObjectName}"> </table> </context> </generatorConfiguration> 复制代码
这个文件头如果有报红,没有关系,不用管,不影响功能。
通过引入generator.properties的方式,我们把里面一些需要修改的位置全部变量化了,所以我们还需要补充一个generator.properties文件:
# 我们需要提供一个driver包所在的路径,一般在.m2文件夹里面,因为所有maven下载的依赖包都会放在这里; # 不知道.m2文件夹位置的可以找一下相关资料 classPathEntry=~/.m2/repository/mysql/mysql-connector-java/8.0.29/mysql-connector-java-8.0.29.jar driverClass=com.mysql.cj.jdbc.Driver # 一定要改成自己的数据库ip、端口和名称 connectionURL=jdbc:mysql://数据库ip:数据库端口/数据库名称?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC # 一定要修改成自己的数据库用户名 userId=数据库用户名 # 一定要修改成自己的数据库密码 password=数据库密码 # 实体类所放的包名,根据自己的项目包名修改,记住要提前把包名创建好 modelTargetPackage=com.example.awesomespring.dao.entity # Mapper.xml存放的路径,在resources里面,记住要提前创建好;要和application.yml里面的mapper-locations路径对上,两个配置的表达方式不同,这个里面不需要加classpath。 sqlMapTargetPackage=mybatis/mapper # mapper类所放的包名,根据自己的项目包名修改,记住要提前把包名创建好 javaClientTargetPackage=com.example.awesomespring.dao.mapper # 哪个数据库 schema=awesome_spring # 哪个表 tableName=account # 生成的实体类名称 domainObjectName=Account 复制代码
至此,我们就可以正常运行mybatis-generator插件了,现在我们打开maven视图,双击mybatis-generator插件
完成后,我们会发现项目中已经自动生成了对应的数据表实体类,Mapper接口,Mapper.xml等文件。
另外还需要注意的是,因为我们生成的Mapper.xml是在resources里面,这些文件是需要在项目打包的时候一起打进去的,所以我们还需要配置一下pom.xml中的build操作,把自动生成的Mapper.xml打包进去:
<!--需要打包的资源--> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.yml</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> 复制代码
最终,我们的项目基本配置完毕,最后一步,让springboot扫描所有的mybatis接口,我们需要在springboot启动类加上@MapperScan(basePackages = "mapper类所放的包名")注解;这样springboot就会把所有的Mapper接口全部扫描进去,达到我们在springboot中集成mybatis的目的了。
全部配置完毕后,我们就可以写代码开始一天的crud了,哈哈!
最后,把application.yml和pom.xml展示出来:
application.yml:
spring: # 数据库链接配置 datasource: url: jdbc:mysql://数据库ip:数据库端口/数据库名称?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver username: 数据库用户名 password: 数据库密码 # 链接池 type: com.alibaba.druid.pool.DruidDataSource druid: # 链接池初始化大小 initial-size: 8 # 最大活跃数 max-active: 16 # 最小空闲数 min-idle: 1 # 最大等待时间 max-wait: 60000 # mybatis配置 mybatis: check-config-location: true # mybatis框架配置文件,对mybatis的生命周期起作用 config-location: "classpath:mybatis/mybatis-config.xml" # 配置xml路径 mapper-locations: "classpath:mybatis/mapper/*Mapper.xml" # 配置model包路径 type-aliases-package: "com.example.awesomespring.dao.entity.*" # 日志配置 logging: pattern: # 日志输出格式 console: "%d{yyyy-MM-dd HH:mm:ss} %clr(%5p) [%thread] %clr(%logger){cyan} : %msg%n" level: # trace < debug < info < warn < error < fatal # 全局日志级别 root: info # 指定包日志级别 com.example.awesomespring: warn 复制代码
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>awesome-spring</artifactId> <version>0.0.1-SNAPSHOT</version> <name>awesome-spring</name> <description>awesome-spring</description> <properties> <java.version>11</java.version> </properties> <dependencies> <!-- spring + spring mvc一套 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--【工具】lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--【数据库】DAO框架 mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency> <!--【数据库】DAO框架分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.3</version> </dependency> <!-- 【数据库】mysql driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> </dependency> <!--【数据库】数据库连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.11</version> </dependency> <!--测试--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <!--需要打包的资源--> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.yml</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> <plugins> <!-- mybatis-generator maven插件,用于生成DAO代码 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.1</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> <configurationFile>${basedir}/src/main/resources/mybatis/generator/generatorConfig.xml </configurationFile> </configuration> </plugin> <!-- maven编译插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>