使用Intellij IDEA 搭建 spring boot 1.5.9 + maven + mybatis + druid + oracle jdbc 項目 帶Generator自動生成器

目的:使用Intellij IDEA  搭建 spring boot 1.5.9 + maven+ druid + mybatis + oracle jdbc 項目 ,

           項目自帶Generator自動生成器,生成mapper及相關文件

 

注意:開發工具:Intellij IDEA

本項目使用的環境:

  • 開發工具:Intellij IDEA 2019.1.1
  • springboot: 1.5.9
  • jdk:1.8.0_211
  • maven:3.3.9

步驟:


1.下載spring assistant插件

由於我已經安裝,所以在插件市場顯示已安裝。

如果沒有安裝過,點擊installed按鈕,下載並重啓。

 

2、創建一個springboot項目:

group id 和package name可以自己起名

 

點擊next 完成項目創建。

3、看一下最後的項目結構

 

4、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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<!--默認爲jar方式-->
	<!--<packaging>jar</packaging>-->
	<!--改爲war方式-->
<!--	<packaging>war</packaging>-->

	<groupId>com.springboot.test</groupId>
	<artifactId>springboot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot</name>
	<description>Spring Boot 搭建</description>

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

	<dependencies>

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

		<!--MyBatis依賴-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.0.1</version>
		</dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
		<!--oracle依賴-->
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc14</artifactId>
			<version>10.2.0.1.0</version>
		</dependency>

		<!--核心模塊 包括內嵌的Tomcat SpringMVC 等-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>

			<!--排除spring-boot-starter-web中的Tomcat-->
<!--			<exclusions>-->
<!--				<exclusion>-->
<!--					<groupId>org.springframework.boot</groupId>-->
<!--					<artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--				</exclusion>-->
<!--			</exclusions>-->
		</dependency>

<!--		<dependency>-->
<!--			<groupId>org.springframework.boot</groupId>-->
<!--			<artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--			&lt;!&ndash;打包的時候可以不用包進去,別的設施會提供。事實上該依賴理論上可以參與編譯,測試,運行等週期。-->
<!--                相當於compile,但是打包階段做了exclude操作&ndash;&gt;-->
<!--			<scope>provided</scope>-->
<!--		</dependency>-->

		<!--測試模塊 包括Junit-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- alibaba的druid數據庫連接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.10</version>
		</dependency>

		<!--	mybatis-generator 自動生成器核心依賴	-->
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.7</version>
		</dependency>


	</dependencies>

	<build>
		<!--	打包名	-->
		<finalName>springboot</finalName>
		<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>src/main/resources/generator/generatorConfig.xml</configurationFile>
					<overwrite>true</overwrite>
					<verbose>true</verbose>
				</configuration>
			</plugin>

		</plugins>
		<resources>
			<resource>
				<directory>src/main/java</directory>
				<includes> <!-- 默認不會加載src/main/java裏面的xml文件 -->
					<include>**/*.xml</include>
				</includes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
<!--					<include>*.properties</include>-->
					<include>*.yml</include>
					<include>mapper/*.xml</include>
					<include>static/*.*</include>
					<include>templates/*.*</include>
					<include>**/*.properties</include>
				</includes>
			</resource>
		</resources>

	</build>

</project>

5、application.yml文件

#數據庫的配置
spring:
  profiles:
    active: dev

#mybatis配置
mybatis:
  #配置mapper xml所在路徑
  mapper-locations: classpath*:mapper/*.xml
  #配置映射所在的包名
  type-aliases-package: com.springboot.test.dto

application-dev.yml文件

server:
  #項目名
  context-path: /
  port: 8081

#數據庫的配置
spring:
  datasource:
    url: jdbc:oracle:thin:@192.168.0.26:1521/庫名
    username: *****
    password: *****
    driver-class-name: oracle.jdbc.driver.OracleDriver
#   type: com.alibaba.druid.pool.DruidConfig   # 指定數據源爲druid
    druid:
      # 連接池的配置信息
      # 初始化大小,最小,最大
      initial-size: 5
      min-idle: 5
      maxActive: 20
      # 配置獲取連接等待超時的時間
      maxWait: 60000
      # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一個連接在池中最小生存的時間,單位是毫秒
      minEvictableIdleTimeMillis: 300000
      #用來檢測連接是否有效的sql,要求是一個查詢語句。
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 打開PSCache,並且指定每個連接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用於防火牆
      filters: stat,wall,log4j
      # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
      connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      # 配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      # 配置DruidStatViewServlet
      stat-view-servlet:
        url-pattern: "/druid/*"
        # IP白名單(沒有配置或者爲空,則允許所有訪問)
        allow: 127.0.0.1
        # IP黑名單 (存在共同時,deny優先於allow)
        deny: 192.168.1.2
        #  禁用HTML頁面上的“Reset All”功能
        reset-enable: false
        # 登錄名
        login-username: admin
        # 登錄密碼
        login-password: 123456

因爲maven中採用druid新版方式   druid-spring-boot-starter ,所以不需要額外配置數據源配置文件,只需要在yml文件中配置好druid參數即可。

#注:我在指定type類型時,總是報找不到DruidConfig類,所有引用包都有,暫不知道原因,若大神瞭解,希望給予我幫助。

不指定類型時,依然可以配置Druid數據源,並且正常訪問到Druid監控界面。

6、log4j.properties  文件

# Configure logging for testing: optionally with log file
log4j.rootLogger=WARN, stdout
# log4j.rootLogger=WARN, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

7、自動生成代碼文件相關代碼

採用配置文件和屬性文件分離的方式

7.1、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="generator/generator.properties"></properties>

	<!--指定特定數據庫的jdbc驅動jar包的位置-->
	<classPathEntry location="${jdbc.driverLocation}"/>

	<context id="default" targetRuntime="MyBatis3">

		<!-- optional,旨在創建class時,對註釋進行控制 -->
		<commentGenerator>
			<property name="suppressDate" value="true"/>
			<property name="suppressAllComments" value="true"/>
		</commentGenerator>

		<!--jdbc的數據庫連接 -->
		<jdbcConnection
				driverClass="${jdbc.driverClass}"
				connectionURL="${jdbc.connectionURL}"
				userId="${jdbc.userId}"
				password="${jdbc.password}">
		</jdbcConnection>


		<!-- 非必需,類型處理器,在數據庫類型和java類型之間的轉換控制-->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false"/>
		</javaTypeResolver>


		<!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類
            targetPackage     指定生成的model生成所在的包名 					//此處修改
            targetProject     指定在該項目下所在的路徑
        -->
		<javaModelGenerator targetPackage="com.springboot.test.model"
							targetProject="src/main/java">

			<!-- 是否允許子包,即targetPackage.schemaName.tableName -->
			<property name="enableSubPackages" value="false"/>
			<!-- 是否對model添加 構造函數 -->
			<property name="constructorBased" value="true"/>
			<!-- 是否對類CHAR類型的列的數據進行trim操作 -->
			<property name="trimStrings" value="true"/>
			<!-- 建立的Model對象是否 不可改變  即生成的Model對象不會有 setter方法,只有構造方法 -->
			<property name="immutable" value="false"/>
		</javaModelGenerator>

		<!--Mapper映射文件生成所在的目錄 爲每一個數據庫的表生成對應的SqlMap  ***mapper.xml文件     //此處修改     -->
		<sqlMapGenerator targetPackage="resources.mapper"
						 targetProject="src/main">
			<property name="enableSubPackages" value="false"/>
		</sqlMapGenerator>

		<!-- 客戶端代碼,生成易於使用的針對Model對象和XML配置文件 的代碼
                type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper對象
                type="MIXEDMAPPER",生成基於註解的Java Model 和相應的Mapper對象
                type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口
        -->
																<!--	//此處修改-->
		<javaClientGenerator targetPackage="com.springboot.test.mapper"
							 targetProject="src/main/java" type="XMLMAPPER">
			<property name="enableSubPackages" value="true"/>
		</javaClientGenerator>


		<table tableName="tcard" domainObjectName="TCard"
			   enableCountByExample="false" enableUpdateByExample="false"
			   enableDeleteByExample="false" enableSelectByExample="false"
			   selectByExampleQueryId="false">
		</table>
	</context>
</generatorConfiguration>

<table   /table>標籤屬性就是數據庫表與實體類相關信息

7.2、generator.properties

jdbc.driverLocation=D:\\Java\\plugins\\mavern-download-jar\\com\\oracle\\ojdbc14\\10.2.0.1.0\\ojdbc14-10.2.0.1.0.jar
jdbc.driverClass=oracle.jdbc.driver.OracleDriver
jdbc.connectionURL=jdbc:oracle:thin:@192.168.0.26:1521/數據庫名
jdbc.userId=用戶名
jdbc.password=密碼

7.3、generator  的main方法文件

package com.springboot.test.utils;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

public class Generator {



    public void generator() throws Exception{

        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //指定 逆向工程配置文件
        File configFile = new File("..\\test\\src\\main\\resources\\generator\\generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
                callback, warnings);
        myBatisGenerator.generate(null);

    }
    public static void main(String[] args) throws Exception {
        try {
            Generator generatorSqlmap = new Generator();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

配置完成後,只需運行Generator 的main方法,就會自動生成mapper、實體類、xml文件。

8、controller 文件、service文件

這些文件就不再贅述

要記得controller文件中註解使用@RestController還是@Controller,記得區分:

(1)使用@Controller 註解,在對應的方法上,視圖解析器可以解析return 的jsp,html頁面,並且跳轉到相應頁面

若返回json等內容到頁面,則需要加@ResponseBody註解

(2)@RestController註解,相當於@Controller+@ResponseBody兩個註解的結合,返回json數據不需要在方法前面加@ResponseBody註解了,但使用@RestController這個註解,就不能返回jsp,html頁面,視圖解析器無法解析jsp,html頁面

service要加入註解@Service

DAO 的mapper文件 要@Component自動注入

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章