天天看點

從零整合springMvc-spring-mybatis等多種架構搭建伺服器(二)

現在就需要向項目裡加入mybatis架構了

首先先建立一個db.properties檔案這是為了解耦,使修改資料庫連接配接與資料庫連接配接配置分離,友善以後修改。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/fiction_websit?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc.username=root
jdbc.password=123456      

接下來引入需要的jar包:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.2</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>      

然後springContext.xml配置資料庫連接配接:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
">
    <!--将配置檔案db.properties引入到spring配置中-->
    <context:property-placeholder location="classpath:properties/db.properties"/>

    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="${jdbc.url}"/>
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>

        <!-- 初始化連接配接大小 -->
        <property name="initialSize" value="0" />
        <!-- 連接配接池最大使用連接配接數量 -->
        <property name="maxActive" value="20" />
        <!-- 連接配接池最小空閑 -->
        <property name="minIdle" value="0" />
        <!-- 擷取連接配接最大等待時間 -->
        <property name="maxWait" value="60000" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />
        <property name="testWhileIdle" value="true" />
        <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接配接,機關是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
        <!-- 配置一個連接配接在池中最小生存的時間,機關是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="25200000" />
        <!-- 打開removeAbandoned功能 -->
        <property name="removeAbandoned" value="true" />
        <!-- 1800秒,也就是30分鐘 -->
        <property name="removeAbandonedTimeout" value="1800" />
        <!-- 關閉abanded連接配接時輸出錯誤日志 -->
        <property name="logAbandoned" value="true" />
        <!-- 監控資料庫 -->
        <!-- <property name="filters" value="stat" /> -->
        <property name="filters" value="mergeStat" />
    </bean>

    <bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 配置資料庫表對應的java實體類 -->
        <property name="typeAliasesPackage" value="top.lemon.fiction.dto" />
        <!-- 自動掃描entity目錄, 省掉Configuration.xml裡的手工配置 -->
        <property name="mapperLocations" value="classpath:top/lemon/fiction/mapper/*Mapper.xml" />
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="top.lemon.fiction.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>
</beans>      

這裡我用mybatis-generator-maven-plugin 插件快速生成實體類、mapper類和mapperXml檔案

<build>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.2</version>
            <executions>
                <execution>
                    <id>Generate MyBatis Files</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <verbose>true</verbose>
                        <overwrite>true</overwrite>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.38</version>
                </dependency>
                <dependency>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-core</artifactId>
                    <version>1.3.5</version>
                </dependency>
                <dependency>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                    <version>3.4.2</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>      

然後在resource下建立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="properties/db.properties"></properties>
    <context  id="mysqlTables"   targetRuntime="MyBatis3">
        <jdbcConnection  driverClass="${jdbc.driver}"  connectionURL="${jdbc.url}"  userId="${jdbc.username}"  password="${jdbc.password}"/>
        <!--指定生成的類型為java類型,避免資料庫中number等類型字段 -->
        <javaTypeResolver>
            <property name="forceBigDecimals"  value="false"/>
        </javaTypeResolver>

        <!--自動生成的實體的存放包路徑 -->
        <javaModelGenerator  targetPackage="top.lemon.fiction.dto"
                             targetProject="src/main/java">
            <property  name="enableSubPackages"  value="true"/>
            <property  name="trimStrings"  value="true"/>
        </javaModelGenerator>

        <!--自動生成的*Mapper.xml檔案存放路徑 -->
        <sqlMapGenerator  targetPackage="top.lemon.fiction.mapper"
                          targetProject="src/main/resources">
            <property  name="enableSubPackages"  value="true"/>
        </sqlMapGenerator>
        <!--自動生成的*Mapper.java存放路徑 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="top.lemon.fiction.dao"  targetProject="src/main/java">
            <property  name="enableSubPackages"  value="true"/>
        </javaClientGenerator>

        <table  tableName="t_account_info"  domainObjectName="AccountInfo"
                enableCountByExample="false"   enableUpdateByExample="false"
                enableDeleteByExample="false"  enableSelectByExample="false"
                selectByExampleQueryId="false">
        </table>
    </context>
</generatorConfiguration>      
從零整合springMvc-spring-mybatis等多種架構搭建伺服器(二)

在成功後,我的目錄就成了下面這樣:

從零整合springMvc-spring-mybatis等多種架構搭建伺服器(二)

這樣你就可以在Controller注入入mapper類(通過mybatis配置後,spring會自動将比對的類加入spring容器中)

從零整合springMvc-spring-mybatis等多種架構搭建伺服器(二)

在controller中注入mapper類

從零整合springMvc-spring-mybatis等多種架構搭建伺服器(二)

參考:

https://blog.csdn.net/xiaojianpan666/article/details/80344219 (《資料庫連接配接池》c3p0,dbcp與druid 三大連接配接池的差別)

https://blog.csdn.net/cw3225654/article/details/81061513 (spring內建mybatis版本對照表)

https://www.cnblogs.com/ljdblog/p/5842778.html (spring整合mybatis)