Spring Boot MySQL,MyBatis,mybatis-generator使用

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

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

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

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

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

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

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

寫的比較簡(jiǎn)單,有疑問可以聯(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
    │  生成語(yǔ)句.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ù)庫(kù)驅(qū)動(dòng)包位置 -->
        <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ù)庫(kù)鏈接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í)行生成語(yǔ)句 java -jar mybatis-generator-core-1.3.5.jar -configfile generator.xml -overwrite
  • 配置MySQL數(shù)據(jù)庫(kù)
    • 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
    
    • 程序入口添加掃描實(shí)體注解(ComplaintApplication.java)
    @SpringBootApplication
    @MapperScan(basePackages = "com.ranhan.dao")
    
  • 項(xiàng)目最終結(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)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容