使用druid连接池整合 mybatis ,并配置generator 工具,生成model,dao层代码

1.创建一个springboot-web应用

2.先贴出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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot1</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- mybatis generator 自动生成代码插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>${basedir}/resources/config/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

复制代码

3.然后是配置文件application.yml

server:
  port: 8082

spring:
  #数据库配置
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/springboot?useSSL=true
    username: root
    password: 123456
    # 使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    filters: stat
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: select 'x'
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxOpenPreparedStatements: 20


mybatis:
  typeAliasesPackage: com.test.entity # 配置別名
  mapperLocations: classpath*:mapping/*.xml #注意点:在classpath后面的*必不可少,缺少星号的话后面的通配符不起作用。  **表示可以表示任意多级目录  *表示多个任意字符,一定要注意不要把路径写错了!


复制代码

在pom文件中 加入的 generator生成 的工具,其中的generatorConfig.xml 就是代码生成的一些配置,其实与我们之前用到的差不多,只是这个是集成到项目里面,更加方便而已,

4.下面贴一下 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>
    <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
    <classPathEntry  location="E:\personal\generator\mysql-connector-java-5.1.25.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库链接URL,用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/springboot" userId="root" password="123456">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="com.test.entity" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.test.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
        <table tableName="book" domainObjectName="Book" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

复制代码

如果确定配置没有问题,但是生成的时候还是报错,试试换一个版本的mysql-connector 的jar包试试。。

注意:mapper 的xml映射文件要放在 resources 这个资源文件夹下, 不然会报错。

5.配置文件弄好了, 然后在idea里面配置一下,点击run-Edit Configurations



Name 自己随便起,配置好确定保存,



选择我们刚添加的generator 点击运行即可,最后就会将代码生成到我们指定的目录下。

6.紧接着要配置扫描我们的mapper,让其托管给spring,能够让别的类进行引用,下面有两种方式可以选择

①.我们可以在每个mapper的接口类上添加@Mapper注解
②.在我们的主类上加入@MapperScan("com.xxx.mapper")注解 //将项目中对应的mapper类的路径加进来就可以了
复制代码

这样基本整合mybatis就完成了,相对于过去的spring整合 确实省事了不少,配置文件也少了不少。

接下来测试一下吧(o ~ o)

controller,使用rest风格请求:

@Controller
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookService bookService;

    /**
     * 查询图书
     * @return
     */
    @RequestMapping(value="/list/{id}")
    @ResponseBody
    public Book list(@PathVariable(value = "id") Integer id){
        Book book = bookService.findById(id);
        return book;
    }
}

复制代码

页面返回:



OK!到此整合成功,下一篇在集成一下redis

之前好好的今天在启动突然报错了我擦,也是醉了,报错如下

Tue Aug 29 13:24:29 CST 2017 WARN: Establishing SSL connection without server's 
identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 
5.7.6+ requirements SSL connection must be established by default if explicit option 
isn't set. For compliance with existing applications not using SSL the 
verifyServerCertificate property is set to 'false'. You need either to explicitly
 disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for
 server certificate verification.
复制代码

百度了一下,给出了如下原因:

由于mysql版本过高创建连接的时候会出现如下报告

解决办法:在mysql连接上加上&useSSL=true

如下:jdbc:mysql:///:3366:test?useUnicode=true&characterEncoding=utf-8&useSSL=true

ssl是一种加密技术在客户端连接数据库的中间做了加密,TCP/IP层中。
复制代码

将原来的yml 文件进行了修改

url: jdbc:mysql://127.0.0.1:3306/springboot?useSSL=true
复制代码