mybatis-plus的使用(代碼生成器) 用戶中心服務(wù)端開發(fā)

1. 簡介 (玉米地傳送門

Mybatis-Plus(簡稱MP)是baomidou 組織小伙伴 Mybatis 的增強陕悬。在 Mybatis 的基礎(chǔ)上只做增強不做改變谨履,為簡化開發(fā)缕棵、提高效率而生畔濒。

2. 擼碼 (基本和ssm框架搭建相似)

1)基本目錄(其中java文件夾的目錄可以不用創(chuàng)建帮坚,使用MP的代碼生成器)

image.png

2) 主要配置

-mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration 
PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--屬性設(shè)置-->
    <properties>
        <!-- 查詢結(jié)果集最大限制萤晴。避免因sql寫法有誤或條件設(shè)置不合理導(dǎo)致查詢出大量結(jié)果集造成的內(nèi)存溢出 -->
        <property name="maxLimitResultset" value="500000"/>
    </properties>

    <settings>
        <!-- 這個配置使全局的映射器啟用或禁用緩存 -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 全局啟用或禁用延遲加載。當(dāng)禁用時社露,所有關(guān)聯(lián)對象都會即時加載 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 設(shè)置關(guān)聯(lián)對象加載的形態(tài)挟阻,此處為按需加載字段(加載字段由SQL指 定),不會加載關(guān)聯(lián)表的所有字段峭弟,以提高性能 -->
        <setting name="aggressiveLazyLoading" value="false" />
        <!-- 對于未知的SQL查詢附鸽,允許返回不同的結(jié)果集以達(dá)到通用的效果 -->
        <setting name="multipleResultSetsEnabled" value="true" />
        <!-- 允許使用列標(biāo)簽代替列名 -->
        <setting name="useColumnLabel" value="true" />
        <!-- 允許使用自定義的主鍵值(比如由程序生成的UUID 32位編碼作為鍵值),數(shù)據(jù)表的PK生成策略將被覆蓋 -->
        <setting name="useGeneratedKeys" value="true" />
        <!-- 給予被嵌套的resultMap以字段-屬性的映射支持 -->
        <setting name="autoMappingBehavior" value="FULL" />
        <!-- SIMPLE:默認(rèn)瞒瘸;REUSE:批量更新操作緩存SQL以提高性能坷备; BATCH:批量更新模式,提高更新效率情臭,但獲取不到影響行數(shù)省撑。-->
        <setting name="defaultExecutorType" value="REUSE" />
        <!-- 數(shù)據(jù)庫超過600秒仍未響應(yīng)則超時 -->
        <setting name="defaultStatementTimeout" value="600" />
        <!-- 設(shè)置但JDBC類型為空時,某些驅(qū)動程序 要指定值,default:OTHER -->
        <setting name="jdbcTypeForNull" value="NULL" />
        <setting name="logImpl" value="NO_LOGGING"/>
    </settings>

</configuration>

spring-mybatis引入分頁赌蔑,掃描注入

<!-- Spring整合Mybatis,更多查看文檔:http://mp.baomidou.com -->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 自動掃描Mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:com/zhoust/mapper/*/*.xml"/>
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
        <property name="typeAliasesPackage" value="com.zhoust.entity.*"/>
        <property name="typeEnumsPackage" value="com.zhoust.entity.enums"/>
        <property name="plugins">
            <array>
                <!-- 分頁插件配置 -->
                <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
                </bean>
            </array>
        </property>
        <!-- 全局配置注入 -->
        <property name="globalConfig" ref="globalConfig" />
    </bean>
    <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
        <!--
            AUTO->`0`("數(shù)據(jù)庫ID自增")
            INPUT->`1`(用戶輸入ID")
            ID_WORKER->`2`("全局唯一ID")
            UUID->`3`("全局唯一ID")
        -->
        <property name="idType" value="2" />
        <!--
            MYSQL->`mysql`
            ORACLE->`oracle`
            DB2->`db2`
            H2->`h2`
            HSQL->`hsql`
            SQLITE->`sqlite`
            POSTGRE->`postgresql`
            SQLSERVER2005->`sqlserver2005`
            SQLSERVER->`sqlserver`
        -->
        <!-- Oracle需要添加該項 -->
        <!-- <property name="dbType" value="oracle" /> -->
        <!-- 全局表為下劃線命名設(shè)置 true -->
        <!-- <property name="dbColumnUnderline" value="true" /> -->
        <property name="metaObjectHandler">
            <bean class="com.zhoust.common.MyMetaObjectHandler" />
        </property>
    </bean>

    <!-- MyBatis 動態(tài)掃描  -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.zhoust.mapper"/>
    </bean>

pom文件

 <!-- Mybatis-Plus 核心庫 -->
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus</artifactId>
          <version>${mybaitsplus.version}</version>
      </dependency>
<!-- Mysql -->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>${mysql.version}</version>
      </dependency>
<!-- Druid 阿里巴巴Druid數(shù)據(jù)源-->
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>${druid.version}</version>
      </dependency>
 <!--代碼生成器-->
      <!-- 模板引擎 -->
      <dependency>
          <groupId>org.apache.velocity</groupId>
          <artifactId>velocity</artifactId>
          <version>1.7</version>
      </dependency>

3. 敲黑板~~MP代碼生成器(建議數(shù)據(jù)庫表名 和 表字段名采用駝峰命名方式)

1). 代碼生成器核心依賴

  <!--代碼生成器-->
  <!-- 模板引擎 -->
  <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity</artifactId>
      <version>1.7</version>
  </dependency>

2). 使用方式

我這里是在test里創(chuàng)建的測試類

test

GeneratorServiceEntity

package generator;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;
public class GeneratorServiceEntity {
    @Test
    public void generateCode() {
        String packageName = "com.zhoust";
        boolean serviceNameStartWithI = false;//user -> UserService, 設(shè)置成true: user -> IUserService
        //需要的表名竟秫,多個表名傳數(shù)組
        generateByTables(serviceNameStartWithI, packageName, "com_user");
    }


    private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
        GlobalConfig config = new GlobalConfig();
        String dbUrl = "jdbc:mysql://自己的數(shù)據(jù)庫地址";
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setUrl(dbUrl)
                .setUsername("自己的連接名")
                .setPassword("自己的連接密碼")
                .setDriverName("com.mysql.jdbc.Driver");
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig
                .setCapitalMode(true)
                .setEntityLombokModel(false)
                .setDbColumnUnderline(true)
                .setNaming(NamingStrategy.underline_to_camel)
                .setInclude(tableNames);
        config.setActiveRecord(false)
                .setAuthor("zhoust")
            //代碼生成目錄
                .setOutputDir("D:\\workspace\\dome\\per_center\\src\\main\\java")
                .setFileOverride(true);
        if (!serviceNameStartWithI) {
            config.setServiceName("%sService");
        }
        new AutoGenerator().setGlobalConfig(config)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(
                        new PackageConfig()
                                .setParent(packageName)
                                .setController("controller")
                                .setEntity("entity")
                ).execute();
    }

    private void generateByTables(String packageName, String... tableNames) {
        generateByTables(true, packageName, tableNames);
    }
}

git地址:https://gitee.com/zhoust123/per_center.git
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娃惯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鸿摇,更是在濱河造成了極大的恐慌石景,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拙吉,死亡現(xiàn)場離奇詭異潮孽,居然都是意外死亡,警方通過查閱死者的電腦和手機筷黔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門往史,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人佛舱,你說我怎么就攤上這事椎例。” “怎么了请祖?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵订歪,是天一觀的道長。 經(jīng)常有香客問我肆捕,道長刷晋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任慎陵,我火速辦了婚禮眼虱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘席纽。我一直安慰自己捏悬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布润梯。 她就那樣靜靜地躺著过牙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仆救。 梳的紋絲不亂的頭發(fā)上抒和,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音彤蔽,去河邊找鬼。 笑死庙洼,一個胖子當(dāng)著我的面吹牛顿痪,可吹牛的內(nèi)容都是我干的镊辕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蚁袭,長吁一口氣:“原來是場噩夢啊……” “哼征懈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起揩悄,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卖哎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后删性,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亏娜,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年蹬挺,在試婚紗的時候發(fā)現(xiàn)自己被綠了维贺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡巴帮,死狀恐怖溯泣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榕茧,我是刑警寧澤垃沦,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站用押,受9級特大地震影響肢簿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜只恨,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一译仗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧官觅,春花似錦纵菌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至功氨,卻和暖如春序苏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捷凄。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工忱详, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跺涤。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓匈睁,卻偏偏與公主長得像监透,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子航唆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容