現在就需要向項目裡加入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>
在成功後,我的目錄就成了下面這樣:
這樣你就可以在Controller注入入mapper類(通過mybatis配置後,spring會自動将比對的類加入spring容器中)
在controller中注入mapper類
參考:
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)