SSM 框架基於ORACLE集成TKMYBATIS 和GENERATOR自動生成代碼(Github源碼)


基於前一個博客搭建的SSM框架

https://www.cnblogs.com/jiangyuqin/p/9870641.html

源碼:https://github.com/JHeaven/ssm-easy-demo

實現基於oracle數據庫集成tkmybatis 和 gengerator自動生成代碼

先看下完成之后的目錄結構

 

首先pom.xml里面引入相應的包和插件

1      <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper -->
2         <dependency>
3             <groupId>tk.mybatis</groupId>
4             <artifactId>mapper</atifactId>
5             <version>${tkmybatis.version}</version>
6         </dependency>    

 

引入插件包的時候,注意標簽的位置,觀察和pluginManagement標簽的相對位置。搞錯了可是出不來的,我盡量給出較多的代碼給大家參考。

 1 <build>
 2         <finalName>ssm-sc</finalName>
 3         <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
 4             <plugins>
 5                 <plugin>
 6                     <artifactId>maven-clean-plugin</artifactId>
 7                     <version>3.0.0</version>
 8                 </plugin>
 9                 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
10                 <plugin>
11                     <artifactId>maven-resources-plugin</artifactId>
12                     <version>3.0.2</version>
13                 </plugin>
14                 <plugin>
15                     <artifactId>maven-compiler-plugin</artifactId>
16                     <version>3.7.0</version>
17                 </plugin>
18                 <plugin>
19                     <artifactId>maven-surefire-plugin</artifactId>
20                     <version>2.20.1</version>
21                 </plugin>
22                 <plugin>
23                     <artifactId>maven-war-plugin</artifactId>
24                     <version>3.2.0</version>
25                 </plugin>
26                 <plugin>
27                     <artifactId>maven-install-plugin</artifactId>
28                     <version>2.5.2</version>
29                 </plugin>
30                 <plugin>
31                     <artifactId>maven-deploy-plugin</artifactId>
32                     <version>2.8.2</version>
33                 </plugin>
34 
35             </plugins>
36         </pluginManagement>
37         <plugins>
38             <!-- 自動生成代碼插件 -->
39             <plugin>
40                 <groupId>org.mybatis.generator</groupId>
41                 <artifactId>mybatis-generator-maven-plugin</artifactId>
42                 <version>${mybatis.generator.version}</version>
43                 <configuration>
44                     <configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
45                     <verbose>true</verbose>
46                     <overwrite>true</overwrite>
47                 </configuration>
48 
49                 <dependencies>
50                     <dependency>
51                         <groupId>org.mybatis.generator</groupId>
52                         <artifactId>mybatis-generator-core</artifactId>
53                         <version>${mybatis.generator.version}</version>
54                     </dependency>
55                     <dependency>
56                         <groupId>com.oracle</groupId>
57                         <artifactId>ojdbc6</artifactId>
58                         <version>${oracle.version}</version>
59                     </dependency>
60                     <dependency>
61                         <groupId>tk.mybatis</groupId>
62                         <artifactId>mapper</artifactId>
63                         <version>${tkmybatis.version}</version>
64                     </dependency>
65                 </dependencies>
66             </plugin>
67         </plugins>
68     </build>

還得在pom.xml里面設置一些變量,主要是給自動生成代碼的配置文件generatorConfig.xml用的,具體是啥看generatorConfig.xml里面的注釋。

 1 <!-- MyBatis Generator -->
 2         <mybatis.generator.version>1.3.7</mybatis.generator.version>
 3         <tkmybatis.version>4.0.4</tkmybatis.version>
 4 
 5         <mapper.plugin>tk.mybatis.mapper.generator.MapperPlugin</mapper.plugin>
 6         <mapper.Mapper>com.jiangyuqin.utils.MyMapper</mapper.Mapper>
 7 
 8         <ModelTargetPackage>com.jiangyuqin.model</ModelTargetPackage>
 9         <ModelTargetProject>src/main/java</ModelTargetProject>
10 
11         <sqlMapperTargetPackage>mapper</sqlMapperTargetPackage>
12         <sqlMapperTargetProject>src/main/resources</sqlMapperTargetProject>
13 
14         <clientTargetPackage>com.jiangyuqin.mapper</clientTargetPackage>
15         <clientTargetProject>src/main/java</clientTargetProject>

新建自己的mapper類,用來被自動生成的mapper繼承,注意這個類需要被放到不可掃描到的位置。

 1 package com.jiangyuqin.utils;  2 
 3 import tk.mybatis.mapper.common.Mapper;  4 import tk.mybatis.mapper.common.MySqlMapper;  5 
 6 /**
 7  * 基礎 mapper  8  * 不可被掃描到  9  * BaseMapper<T> 10  * MySqlMapper<T> 11  * IdsMapper<T> 12  * ConditionMapper<T> 13  * ExampleMapper<T> 14  * @param <T> 15  */
16 public interface MyMapper<T> extends Mapper<T>,MySqlMapper<T> { 17     
18 }

新建配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  3  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
 4 <generatorConfiguration>
 5 
 6     <properties resource="generator/db.properties"/>
 7 
 8     <context id="Oracle" targetRuntime="MyBatis3Simple" defaultModelType="flat">
 9         <!-- TKmybatis配置 -->
10         <property name="javaFileEncoding" value="UTF-8"/>
11         <property name="beginningDelimiter" value="`"/>
12         <property name="endingDelimiter" value="`"/>
13         <plugin type="${mapper.plugin}">
14             <property name="mappers" value="${mapper.Mapper}"/>
15         </plugin>
16 
17         <commentGenerator>
18             <!-- 是否去除自動生成的注釋 true:是 : false:否 -->
19             <property name="suppressAllComments" value="true"/>
20         </commentGenerator>
21         <!-- 數據庫鏈接URL、用戶名、密碼 -->
22         <jdbcConnection driverClass="${db.driver}"
23  connectionURL="${db.url}"
24  userId="${db.user}"
25  password="${db.password}" />
26 
27         <javaTypeResolver>
28             <property name="forceBigDecimals" value="false" />
29         </javaTypeResolver>
30         <!-- 生成模型的包名和位置 -->
31         <javaModelGenerator targetPackage="${ModelTargetPackage}" targetProject="${ModelTargetProject}" />
32         <!-- 生成的映射文件包名和位置 -->
33         <sqlMapGenerator targetPackage="${sqlMapperTargetPackage}" targetProject="${sqlMapperTargetProject}" />
34         <!-- 生成DAO的包名和位置 -->
35         <javaClientGenerator targetPackage="${clientTargetPackage}" targetProject="${clientTargetProject}" type="XMLMAPPER" />
36         <!-- 要生成的那些表 -->
37 
38         <table tableName="Z_DBA_DATASOURCE" domainObjectName="DbaDatasource" >
39             <generatedKey column="UUID" sqlStatement="SELECT 1 FROM DUAL" identity="true"/>
40         </table>
41         <table tableName="Z_SYS_LOG" domainObjectName="SysLog" >
42             <generatedKey column="UUID" sqlStatement="SELECT 1 FROM DUAL" identity="true"/>
43         </table>
44         <table tableName="Z_USR_LOGINLOG" domainObjectName="UsrLoginLog" >
45             <generatedKey column="UUID" sqlStatement="SELECT 1 FROM DUAL" identity="true"/>
46         </table>
47         <table tableName="Z_USR_ADMIN" domainObjectName="UsrAdmin" >
48             <generatedKey column="UUID" sqlStatement="SELECT 1 FROM DUAL" identity="true"/>
49         </table>
50     </context>
51 </generatorConfiguration>
其中table標簽中sqlStatement這個參數,作廢,因為oracle沒有自增功能,與其去適應復雜的框架來實現妥協的不夠保險的自增,還不如在java里面用UUID傳參插入。
(或者以后自己寫一個生成UUID的方法,暫時直接調用JAVA提供的。)

db.properties就不給出了,無非就是一些數據連接。
到這基本就可以開始生成代碼了。

生成就結束了。
讓我們測試一下。
1.全量查詢

 

 

2.插入

 

報錯了,查看日志。

 

插入成功,回查UUID的時候出錯了,說明我們在generatorConfig.xml中配的 sqlStatement="select 1 from dual" 沒起作用
那就先手動修改吧
在實體類中,GeneratedValue注釋中,添加參數 generator = "SELECT SYS_GUID() FROM DUAL",這個回傳的值沒有太大的意義,可以寫為 select 1 from dual

嘗試插入

 

成功。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM