Spring Boot MySQL片吊,MyBatis,mybatis-generator使用

ORM框架的本質(zhì)是簡化編程中操作數(shù)據(jù)庫的編碼协屡,發(fā)展到現(xiàn)在基本上就剩兩家了俏脊。

一個是宣稱可以不用寫一句SQL的Hibernate,一個是可以靈活調(diào)試動態(tài)sql的MyBatis,兩者各有特點肤晓,在企業(yè)級系統(tǒng)開發(fā)中可以根據(jù)需求靈活使用爷贫。

發(fā)現(xiàn)一個有趣的現(xiàn)象:傳統(tǒng)企業(yè)大都喜歡使用hibernate,互聯(lián)網(wǎng)行業(yè)通常使用mybatis认然。

Hibernate特點就是所有的sql都用Java代碼來生成,不用跳出程序去寫(看)sql漫萄,有著編程的完整性卷员,發(fā)展到最頂端就是Spring Data Jpa這種模式了,基本上根據(jù)方法名就可以生成對應(yīng)的sql了腾务,有不太了解的可以看Spring Data Jpa的使用毕骡。

MyBatis初期使用比較麻煩,需要各種配置文件岩瘦、實體類未巫、dao層映射關(guān)聯(lián)、還有一大推其它配置启昧。當(dāng)然mybatis也發(fā)現(xiàn)了這種弊端橱赠,初期開發(fā)了generator可以根據(jù)表結(jié)果自動生產(chǎn)實體類、配置文件和dao層代碼箫津,可以減輕一部分開發(fā)量狭姨;后期也進行了大量的優(yōu)化可以使用注解了,自動管理dao層和配置文件等苏遥,發(fā)展到最頂端就是今天要講的這種模式了饼拍,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以簡單配置輕松上手田炭。

現(xiàn)在想想Spring Boot就是方便呀师抄,任何東西只要關(guān)聯(lián)到Spring Boot都是化繁為簡。

官方說明MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot

寫的比較簡單教硫,有疑問可以聯(lián)系leiyang_39@163.com.

  • mybatis-generator 使用教程
    D:.
    │  generator.xml
    │  mybatis-generator-core-1.3.5.jar
    │  mysql-connector-java-5.1.30.jar
    │  生成語句.txt
    │
    ├─java
    │  └─com
    │      └─ranhan
    │          ├─dao
    │          │      WalletLogsMapper.java
    │          │
    │          └─model
    │                  WalletLogs.java
    │                  WalletLogsExample.java
    │
    └─resources
        └─mapper
                WalletLogsMapper.xml
    
    • 配置生成文件generator.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>
        <!-- 數(shù)據(jù)庫驅(qū)動包位置 -->
        <classPathEntry location="D:\mybatis-generator\mysql-connector-java-5.1.30.jar" />
        <context id="DB2Tables" targetRuntime="MyBatis3">
            <commentGenerator>
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            <!-- 數(shù)據(jù)庫鏈接URL茶鉴、用戶名、密碼 -->
            <!-- <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://115.29.164.59:3306/storedb" userId="cloudbridge" password="demonWang0510"> -->
            <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.0.133:3306/ranbb" userId="admin" password="123456">
            </jdbcConnection>
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
            <!-- 生成模型的包名和位置 -->
            <javaModelGenerator targetPackage="com.ranhan.model" targetProject="D:\mybatis-generator\java">
                <property name="enableSubPackages" value="true" />
                <property name="trimStrings" value="true" />
            </javaModelGenerator>
            <!-- 生成的映射文件包名和位置 -->
            <sqlMapGenerator targetPackage="mapper" targetProject="D:\mybatis-generator\resources">
                <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
            <!-- 生成DAO的包名和位置 -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.ranhan.dao" targetProject="D:\mybatis-generator\java">
                <property name="enableSubPackages" value="true" />
            </javaClientGenerator>
            <!-- 要生成那些表(更改tableName和domainObjectName就可以) -->
    
            <table tableName="wallet_logs" domainObjectName="WalletLogs" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true" />
        </context>
    </generatorConfiguration>
    
    • 執(zhí)行生成語句 java -jar mybatis-generator-core-1.3.5.jar -configfile generator.xml -overwrite
  • 配置MySQL數(shù)據(jù)庫
    • pom.xml 引入依賴
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <!-- MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector-java.version}</version>
    </dependency>
    
    • application.properties 配置數(shù)據(jù)源和服務(wù)名稱及端口
    spring.application.name=test
    spring.datasource.url=@spring.datasource.url@
    spring.datasource.username=@spring.datasource.username@
    spring.datasource.password=@spring.datasource.password@
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    # Number of ms to wait before throwing an exception if no connection is available.
    spring.datasource.max-wait=10000
    
    # Maximum number of active connections that can be allocated from this pool at the same time.
    spring.datasource.max-active=50
    
    # Server port
    server.port=${port:9121}
    
    #Whether subclass-based (CGLIB) proxies are to be 
    #created (true) as opposed to standard Java interface-based proxies (false).
    spring.aop.proxy-target-class=true
    
    # Validate the connection before borrowing it from the pool.
    spring.datasource.test-on-borrow=true
    #spring.datasource.validationQuery=SELECT 1
    
  • 配置MyBatis
    • pom.xml 引入依賴
    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis-spring-boot-starter.version}</version>
    </dependency>
    
    • application.properties 配置MyBatis
    # Mybatis
    mybatis.mapper-locations=classpath:mapper/*Mapper.xml
    mybatis.type-aliases-package=com.ranhan.model
    mybatis.configuration.mapUnderscoreToCamelCase=true
    mybatis.configuration.useColumnLabel=true
    
    • 程序入口添加掃描實體注解(ComplaintApplication.java)
    @SpringBootApplication
    @MapperScan(basePackages = "com.ranhan.dao")
    
  • 項目最終結(jié)構(gòu)
├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─ranhan
│  │  │          │  ComplaintApplication.java
│  │  │          │
│  │  │          ├─config
│  │  │          │      MyBatisConfig.java
│  │  │          │      TokenInterceptor.java
│  │  │          │      WebConfig.java
│  │  │          │
│  │  │          ├─controller
│  │  │          │      ComplaintController.java
│  │  │          │
│  │  │          ├─dao
│  │  │          │      ComplaintMapper.java
│  │  │          │
│  │  │          ├─domain
│  │  │          │      IdsVo.java
│  │  │          │      ReturnBase.java
│  │  │          │      ServiceException.java
│  │  │          │      UserException.java
│  │  │          │
│  │  │          ├─enums
│  │  │          │      ComplaintFromEnum.java
│  │  │          │      ComplaintStateEnum.java
│  │  │          │      ComplaintTypeEnum.java
│  │  │          │
│  │  │          ├─model
│  │  │          │      Complaint.java
│  │  │          │      ComplaintExample.java
│  │  │          │
│  │  │          └─service
│  │  │              │  ComplaintService.java
│  │  │              │  LoginService.java
│  │  │              │  OrderService.java
│  │  │              │
│  │  │              └─impl
│  │  │                      ComplaintServiceImpl.java
│  │  │                      LoginServiceImpl.java
│  │  │                      OrderServiceImpl.java
│  │  │
│  │  └─resources
│  │      │  application-dev.properties
│  │      │  application-prod.properties
│  │      │  application-test.properties
│  │      │  application.properties
│  │      │  logback-spring.xml
│  │      │
│  │      └─mapper
│  │              ComplaintMapper.xml
│  │
│  └─test
│      └─java

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末景用,一起剝皮案震驚了整個濱河市涵叮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伞插,老刑警劉巖割粮,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異媚污,居然都是意外死亡舀瓢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門耗美,熙熙樓的掌柜王于貴愁眉苦臉地迎上來京髓,“玉大人航缀,你說我怎么就攤上這事《渎啵” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵甸私,是天一觀的道長诚些。 經(jīng)常有香客問我,道長皇型,這世上最難降的妖魔是什么诬烹? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮弃鸦,結(jié)果婚禮上绞吁,老公的妹妹穿的比我還像新娘。我一直安慰自己唬格,他們只是感情好家破,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著购岗,像睡著了一般汰聋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喊积,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天烹困,我揣著相機與錄音,去河邊找鬼乾吻。 笑死髓梅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绎签。 我是一名探鬼主播枯饿,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诡必!你這毒婦竟也來了鸭你?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤擒权,失蹤者是張志新(化名)和其女友劉穎袱巨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碳抄,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡愉老,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了剖效。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫉入。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡焰盗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咒林,到底是詐尸還是另有隱情熬拒,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布垫竞,位于F島的核電站澎粟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏欢瞪。R本人自食惡果不足惜活烙,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遣鼓。 院中可真熱鬧啸盏,春花似錦、人聲如沸骑祟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽次企。三九已至粉怕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抒巢,已是汗流浹背贫贝。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛉谜,地道東北人稚晚。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像型诚,于是被迫代替她去往敵國和親客燕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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