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資源文件
- 名稱可以隨便取,這里以 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"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<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>
累了就先寫這么多了,不明白的地方請留言問,以后還會更新!
原文:http://www.godql.com/blog/2017/06/03/Intellij_IDEA_Integration_MyBatis/
作者:Dr.Lester