1. 程式人生 > 其它 >OsgEarth開發筆記(四):Qt5.15.2在QtCreator整合Osg3.6.3+OsgEarth3.1+OsgQt的vs2019x64版本開發環境搭建

OsgEarth開發筆記(四):Qt5.15.2在QtCreator整合Osg3.6.3+OsgEarth3.1+OsgQt的vs2019x64版本開發環境搭建

逆向工程在快速開發的專案中有使用到,這樣可以避免冗餘工作

【1】在pom檔案中新增外掛

<build>
    <plugins>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.7</version>
            <configuration>
                <!-- 配置檔案路徑 -->
                <configurationFile>
                    src/main/resources/generatorConfig.xml
                </configurationFile>
                <verbose>true</verbose>
                <overwrite>true</overwrite>
            </configuration>
            <executions>
                <execution>
                    <id>Generate MyBatis Artifacts</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <!-- 外掛依賴 -->
            <dependencies>
                <dependency>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-core</artifactId>
                    <version>1.3.7</version>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.47</version>
                </dependency>
                <dependency>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                    <version>3.4.5</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

【2】匯入配置檔案,即在resources目錄下建立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>
    <!-- 指定資料連線驅動jar地址 -->
    <classPathEntry location="D:\java\maven_repository\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar"/>

    <context id="context" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
            <!--去除timestamp -->
            <property name="suppressDate" value="true"/>
        </commentGenerator>
        <!-- 資料庫的相關配置 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mall"
                        userId="root"
                        password="123456"/>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 實體類生成的位置 -->
        <javaModelGenerator targetPackage="com.psjj.mall.model.po" targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- *Mapper.xml 檔案的位置 ,targetPackage:包名,targetProject:專案下的路徑-->
        <sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- Mapper 介面檔案的位置 -->
        <javaClientGenerator targetPackage="com.psjj.mall.mapper" targetProject="src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- 配置表資訊 -->
        <table tableName="mall_cart" domainObjectName="Cart">
            <!--是否生成有參的構造方法, 預設否-->
            <property name="constructorBased" value="false"/>
            <!--預設值為false,如果為true,在生成的sql語句中表名中不會加上catalog或schema-->
            <property name="ignoreQualifiersAtRuntime" value="false"/>
            <!--預設值為false,如果為true建立不可變類,生成包含所有field引數的構造方法,沒有setter方法-->
            <property name="immutable" value="false"/>
            <!--是否只生成模型類,預設值為false-->
            <property name="modelOnly" value="false"/>
            <!--是否使用真實的欄位名稱作為類中的屬性名稱,預設值為false-->
            <property name="useActualColumnNames" value="false"/>
            <!--主鍵生成策略:可選值:MySql、SqlServer、SYBASE、DB2、Derby等
                使用MySql即生成:SELECT LAST_INSERT_ID() 獲取主鍵值
            -->
            <generatedKey column="id" sqlStatement="MySql"/>
        </table>
        <!-- 配置表資訊 -->
        <table tableName="mall_category" domainObjectName="Category">
            <!--是否生成有參的構造方法, 預設否-->
            <property name="constructorBased" value="false"/>
            <!--預設值為false,如果為true,在生成的sql語句中表名中不會加上catalog或schema-->
            <property name="ignoreQualifiersAtRuntime" value="false"/>
            <!--預設值為false,如果為true建立不可變類,生成包含所有field引數的構造方法,沒有setter方法-->
            <property name="immutable" value="false"/>
            <!--是否只生成模型類,預設值為false-->
            <property name="modelOnly" value="false"/>
            <!--是否使用真實的欄位名稱作為類中的屬性名稱,預設值為false-->
            <property name="useActualColumnNames" value="false"/>
            <!--主鍵生成策略:可選值:MySql、SqlServer、SYBASE、DB2、Derby等
                使用MySql即生成:SELECT LAST_INSERT_ID() 獲取主鍵值
            -->
            <generatedKey column="id" sqlStatement="MySql"/>
        </table>
        <!-- 配置表資訊 -->
        <table tableName="mall_order" domainObjectName="Order">
            <!--是否生成有參的構造方法, 預設否-->
            <property name="constructorBased" value="false"/>
            <!--預設值為false,如果為true,在生成的sql語句中表名中不會加上catalog或schema-->
            <property name="ignoreQualifiersAtRuntime" value="false"/>
            <!--預設值為false,如果為true建立不可變類,生成包含所有field引數的構造方法,沒有setter方法-->
            <property name="immutable" value="false"/>
            <!--是否只生成模型類,預設值為false-->
            <property name="modelOnly" value="false"/>
            <!--是否使用真實的欄位名稱作為類中的屬性名稱,預設值為false-->
            <property name="useActualColumnNames" value="false"/>
            <!--主鍵生成策略:可選值:MySql、SqlServer、SYBASE、DB2、Derby等
                使用MySql即生成:SELECT LAST_INSERT_ID() 獲取主鍵值
            -->
            <generatedKey column="id" sqlStatement="MySql"/>
        </table>
        <!-- 配置表資訊 -->
        <table tableName="mall_order_item" domainObjectName="OrderItem">
            <!--是否生成有參的構造方法, 預設否-->
            <property name="constructorBased" value="false"/>
            <!--預設值為false,如果為true,在生成的sql語句中表名中不會加上catalog或schema-->
            <property name="ignoreQualifiersAtRuntime" value="false"/>
            <!--預設值為false,如果為true建立不可變類,生成包含所有field引數的構造方法,沒有setter方法-->
            <property name="immutable" value="false"/>
            <!--是否只生成模型類,預設值為false-->
            <property name="modelOnly" value="false"/>
            <!--是否使用真實的欄位名稱作為類中的屬性名稱,預設值為false-->
            <property name="useActualColumnNames" value="false"/>
            <!--主鍵生成策略:可選值:MySql、SqlServer、SYBASE、DB2、Derby等
                使用MySql即生成:SELECT LAST_INSERT_ID() 獲取主鍵值
            -->
            <generatedKey column="id" sqlStatement="MySql"/>
        </table>
        <!-- 配置表資訊 -->
        <table tableName="mall_product" domainObjectName="Product">
            <!--是否生成有參的構造方法, 預設否-->
            <property name="constructorBased" value="false"/>
            <!--預設值為false,如果為true,在生成的sql語句中表名中不會加上catalog或schema-->
            <property name="ignoreQualifiersAtRuntime" value="false"/>
            <!--預設值為false,如果為true建立不可變類,生成包含所有field引數的構造方法,沒有setter方法-->
            <property name="immutable" value="false"/>
            <!--是否只生成模型類,預設值為false-->
            <property name="modelOnly" value="false"/>
            <!--是否使用真實的欄位名稱作為類中的屬性名稱,預設值為false-->
            <property name="useActualColumnNames" value="false"/>
            <!--主鍵生成策略:可選值:MySql、SqlServer、SYBASE、DB2、Derby等
                使用MySql即生成:SELECT LAST_INSERT_ID() 獲取主鍵值
            -->
            <generatedKey column="id" sqlStatement="MySql"/>
        </table>
        <!-- 配置表資訊 -->
        <table tableName="mall_user" domainObjectName="User">
            <!--是否生成有參的構造方法, 預設否-->
            <property name="constructorBased" value="false"/>
            <!--預設值為false,如果為true,在生成的sql語句中表名中不會加上catalog或schema-->
            <property name="ignoreQualifiersAtRuntime" value="false"/>
            <!--預設值為false,如果為true建立不可變類,生成包含所有field引數的構造方法,沒有setter方法-->
            <property name="immutable" value="false"/>
            <!--是否只生成模型類,預設值為false-->
            <property name="modelOnly" value="false"/>
            <!--是否使用真實的欄位名稱作為類中的屬性名稱,預設值為false-->
            <property name="useActualColumnNames" value="false"/>
            <!--主鍵生成策略:可選值:MySql、SqlServer、SYBASE、DB2、Derby等
                使用MySql即生成:SELECT LAST_INSERT_ID() 獲取主鍵值
            -->
            <generatedKey column="id" sqlStatement="MySql"/>
        </table>
    </context>
</generatorConfiguration>

【3】生成程式碼,在第一布重新匯入pom檔案中的依賴後會有mybatis-generator外掛,雙擊mybatis-generator:generate,雙擊之後需要一點時間才能生成,千萬不要多次雙擊

【4】修改錯誤程式碼,將mapper對映檔案中的BEFORE替換成AFTER

原因老師講了,但是我沒聽懂

【5】給所有po類生成修改時間

【6】用完程式碼生成後要將之前新增到pom檔案中新增的外掛註釋掉,不然之後使用其他外掛時會將該外掛前面的外掛在執行一次,可能會出現重複生成程式碼的情況

【7】整合mybaitis,新增需要用到的依賴

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.17</version>
</dependency>
<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>2.2.0</version>
</dependency>

【8】配置資料來源

!!!注意雖然前面的generatorConfig.xml裡邊已經寫過配置資料庫了,但是那裡邊只是跟生成程式碼有關係,專案連線資料庫還是需要配置

這裡是用的application.yml檔案

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/mall
    username: root
    password: 123456
# mybatis相關配置
mybatis:
  mapper-locations: classpath:mappers/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

【9】開啟在啟動類開啟mybatis註解掃描

【10】根據自己生成的程式碼寫一個測試

@SpringBootTest
class MallApplicationTests {
    @Autowired
    private CategoryEntityMapper categoryEntityMapper;
    @Test
    void contextLoads() {
        CategoryEntity categoryEntity = categoryEntityMapper.selectByPrimaryKey(3);
        System.out.println(categoryEntity.getName());
    }
}