1. 程式人生 > >Intellij IDEA 2017整合MyBatis三劍客

Intellij IDEA 2017整合MyBatis三劍客

MyBatis三劍客指的是:MyBatis-Generate、Mybatis Plus、MyBatis-PageHelper

MyBatis-Generate

使用 Mybatis Generator 這個maven外掛來快速生成 Dao 類, mapper 配置檔案和 Model 類.

MyBatis Generator(簡稱MBG)是MyBatis的程式碼生成器.可以自動查詢資料庫中的所有表,然後生成可以訪問表的基礎物件型別.解決了對資料庫操作有最大影響的一些簡單的CRUD增刪改查操作,但是仍需要對聯合查詢和儲存過程手寫SQL語句和物件.

1.在pom檔案中新增外掛

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <configuration>
         <verbose>true</verbose>
         <overwrite>true</overwrite>
    </configuration>
</plugin>

2.在maven專案中的resource中建立xml檔案與properties資原始檔

xml檔案與properties資原始檔
- 名稱可以隨便取,這裡以 generatorConfig.xml 為名
- 資原始檔為 datasource.properties 檔案,這個可不要,這裡用是因為方便管理而已

3.配置generatorConfig.xml與資原始檔

generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD
MyBatis Generator Configuration 1.0//EN"
> <generatorConfiguration> <!--匯入屬性配置--> <properties resource="datasource.properties"></properties> <!--指定特定資料庫的jdbc驅動jar包的位置--> <classPathEntry location="${db.driverLocation}"/> <context id="default" targetRuntime="MyBatis3"> <!-- optional,旨在建立class時,對註釋進行控制 --> <commentGenerator> <property name="suppressDate" value="true"/> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--jdbc的資料庫連線 --> <jdbcConnection driverClass="${db.driverClassName}" connectionURL="${db.url}" userId="${db.username}" password="${db.password}"> </jdbcConnection> <!-- 非必需,型別處理器,在資料庫型別和java型別之間的轉換控制 --> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類 targetPackage 指定生成的model生成所在的包名 targetProject 指定在該專案下所在的路徑 --> <!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">--> <javaModelGenerator targetPackage="org.mmall.pojo" 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檔案 --> <!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">--> <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources"> <property name="enableSubPackages" value="false"/> </sqlMapGenerator> <!-- 客戶端程式碼,生成易於使用的針對Model物件和XML配置檔案 的程式碼 type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper物件 type="MIXEDMAPPER",生成基於註解的Java Model 和相應的Mapper物件 type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper介面 --> <!-- targetPackage:mapper介面dao生成的位置 --> <!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">--> <javaClientGenerator type="XMLMAPPER" targetPackage="org.mmall.dao" targetProject="./src/main/java"> <!-- enableSubPackages:是否讓schema作為包的字尾 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <table tableName="mmall_shipping" domainObjectName="Shipping" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="mmall_cart" domainObjectName="Cart" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="mmall_cart_item" domainObjectName="CartItem" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="mmall_category" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="mmall_order" domainObjectName="Order" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="mmall_order_item" domainObjectName="OrderItem" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="mmall_pay_info" domainObjectName="PayInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <table tableName="mmall_product" domainObjectName="Product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <columnOverride column="detail" jdbcType="VARCHAR" /> <columnOverride column="sub_images" jdbcType="VARCHAR" /> </table> <table tableName="mmall_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <!-- geelynote mybatis外掛的搭建 --> </context> </generatorConfiguration>

datasource.properties

db.driverLocation =  E:\\jre\\mysql-connector-java-5.1.6.jar
db.driverClassName = com.mysql.jdbc.Driver
db.url = jdbc:mysql://127.0.0.1:3306/mmall?characterEncoding=utf-8
db.username = root
db.password = root

4.執行
- 方式一:
直接執行
- 方式二:
- 在Intellij IDEA新增一個“Run執行”,這個少用 略

Mybatis-Plus

Mybatis Plus(簡稱MP)是一個 Mybatis 的增強工具,在 Mybatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。
Mybatis Plus中文文件

1.功能

  • 提供Mapper介面與配置檔案中對應SQL的導航
  • 編輯XML檔案時自動補全
  • 根據Mapper介面, 使用快捷鍵生成xml檔案及SQL標籤
  • ResultMap中的property支援自動補全,支援級聯(屬性A.屬性B.屬性C)
  • 快捷鍵生成@Param註解
  • XML中編輯SQL時, 括號自動補全
  • XML中編輯SQL時, 支援引數自動補全(基於@Param註解識別引數)
  • 自動檢查Mapper XML檔案中ID衝突
  • 自動檢查Mapper XML檔案中錯誤的屬性值
  • 支援Find Usage
  • 支援重構從命名
  • 支援別名
  • 自動生成ResultMap屬性
  • 快捷鍵: Option + Enter(Mac) | Alt + Enter(Windows)

2.安裝與破解

  • 這是一個IDE外掛,目前是收費的,這裡我用的是Intellij IDEA的
    安裝
  • 裝完之後把Intellij IDEA關了,然後開啟下面的連結跟著步驟來就可以大功告成
    外掛註冊機

MyBatis-PageHelper

這個一個通用的分頁外掛,使用時 Mybatis 最低版本不能低於3.3
原理:通過aop再截獲我們執行sql的時候把相關的資料再執行一次
GitHub地址

1.在pom檔案中新增依賴

<!-- mybatis pager -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.0</version>
</dependency>

<dependency>
    <groupId>com.github.miemiedev</groupId>
    <artifactId>mybatis-paginator</artifactId>
    <version>1.2.17</version>
</dependency>

<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>0.9.4</version>
</dependency>

2.在spring配置檔案內新增配置

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath*:mappers/*Mapper.xml"></property>

    <!-- 分頁外掛 -->
    <property name="plugins">
        <array>
            <bean class="com.github.pagehelper.PageHelper">
                <property name="properties">
                    <value>
                        <!-- 資料庫方言 -->
                        dialect=mysql
                    </value>
                </property>
            </bean>
        </array>
    </property>
</bean>

累了就先寫這麼多了,不明白的地方請留言問,以後還會更新!