Spring Boot MySQL,MyBatis,mybatis-generator使用

ORM框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了。

一个是宣称可以不用写一句SQL的Hibernate,一个是可以灵活调试动态sql的MyBatis,两者各有特点,在企业级系统开发中可以根据需求灵活使用。

发现一个有趣的现象:传统企业大都喜欢使用hibernate,互联网行业通常使用mybatis。

Hibernate特点就是所有的sql都用Java代码来生成,不用跳出程序去写(看)sql,有着编程的完整性,发展到最顶端就是Spring Data Jpa这种模式了,基本上根据方法名就可以生成对应的sql了,有不太了解的可以看Spring Data Jpa的使用

MyBatis初期使用比较麻烦,需要各种配置文件、实体类、dao层映射关联、还有一大推其它配置。当然mybatis也发现了这种弊端,初期开发了generator可以根据表结果自动生产实体类、配置文件和dao层代码,可以减轻一部分开发量;后期也进行了大量的优化可以使用注解了,自动管理dao层和配置文件等,发展到最顶端就是今天要讲的这种模式了,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以简单配置轻松上手。

现在想想Spring Boot就是方便呀,任何东西只要关联到Spring Boot都是化繁为简。

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

写的比较简单,有疑问可以联系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>
        <!-- 数据库驱动包位置 -->
        <classPathEntry location="D:\mybatis-generator\mysql-connector-java-5.1.30.jar" />
        <context id="DB2Tables" targetRuntime="MyBatis3">
            <commentGenerator>
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            <!-- 数据库链接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>
    
    • 执行生成语句 java -jar mybatis-generator-core-1.3.5.jar -configfile generator.xml -overwrite
  • 配置MySQL数据库
    • 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 配置数据源和服务名称及端口
    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")
    
  • 项目最终结构
├─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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容