欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Boot MySQL,MyBatis,mybatis-generator使用

程序员文章站 2022-04-24 20:58:52
...

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

写的比较简单,有疑问可以联系[email protected].

  • 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
    [email protected]@
    [email protected]@
    [email protected]@
    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