• SpringCloud+MyBatis+Redis整合—— 超详细实例(一)


    1、SpringCloud+MyBatis

      MyBatis 是一款优秀的轻量级半自动持久层框架,与之相对应的还有hibernate框架。

        话不多说,接下来搭建SpringCloud+MyBatis环境:

    • 第一步,在SpringCloud环境中的pom.xml中加入:
     1 <!-- 引用Mybatis 和 Mysql驱动开始  -->
     2         <dependency>  
     3             <groupId>org.mybatis.spring.boot</groupId>  
     4             <artifactId>mybatis-spring-boot-starter</artifactId>  
     5             <version>1.3.0</version>  
     6         </dependency>  
     7         <dependency>  
     8             <groupId>mysql</groupId>  
     9             <artifactId>mysql-connector-java</artifactId>  
    10         </dependency>  
    11 <!-- 引用Mybatis 和 Mysql驱动结束  -->
    • 第二步,在Mysql数据库中创建User表  
    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `id` int(11) NOT NULL COMMENT '主键',
      `name` varchar(64) NOT NULL COMMENT '姓名',
      `birthday` date DEFAULT NULL COMMENT '生日',
      `address` varchar(256) DEFAULT NULL COMMENT '地址',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of user
    -- ----------------------------
    INSERT INTO `user` VALUES ('1', '石露露', '1994-10-08', '卡布奇诺国际社区');
    • 第三步,在SpringCloud中配置反向生成工具对User表生成相应的实体类和配置文件

    在pom.xml文件的<bulid>标签中通过maven添加插件引用

     1         <plugin>  
     2                 <groupId>org.mybatis.generator</groupId>  
     3                 <artifactId>mybatis-generator-maven-plugin</artifactId>  
     4                 <version>1.3.5</version>  
     5                 <dependencies>  
     6                     <dependency>  
     7                         <groupId> mysql</groupId>  
     8                         <artifactId> mysql-connector-java</artifactId>  
     9                         <version> 5.1.39</version>  
    10                     </dependency>  
    11                     <dependency>  
    12                         <groupId>org.mybatis.generator</groupId>  
    13                         <artifactId>mybatis-generator-core</artifactId>  
    14                         <version>1.3.5</version>  
    15                     </dependency>  
    16                 </dependencies>  
    17                 <executions>  
    18                     <execution>  
    19                         <id>Generate MyBatis Artifacts</id>  
    20                         <phase>package</phase>  
    21                         <goals>  
    22                             <goal>generate</goal>  
    23                         </goals>  
    24                     </execution>  
    25                 </executions>  
    26                 <configuration>  
    27                     <!--允许移动生成的文件 -->  
    28                     <verbose>true</verbose>  
    29                     <!-- 是否覆盖 -->  
    30                     <overwrite>true</overwrite>  
    31                     <!-- 自动生成的配置 -->  
    32                     <configurationFile>  
    33                         src/main/resources/mybatis-generator.xml
    34                     </configurationFile>  
    35                 </configuration>  
    36             </plugin>

     新建配置文件generatorConfig.xml,配置文件需配置数据库jar包位置,生成的文件存放位置等信息:

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <!DOCTYPE generatorConfiguration  
     3         PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  
     4         "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">  
     5 <generatorConfiguration>  
     6     <!--mysql 连接数据库jar 这里选择自己本地位置-->  
     7     <classPathEntry location="F:dev-space
    epomysqlmysql-connector-java5.1.45mysql-connector-java-5.1.45.jar" />  
     8     <context id="testTables" targetRuntime="MyBatis3">  
     9         <commentGenerator>  
    10             <!-- 是否去除自动生成的注释 true:是 : false:否 -->  
    11             <property name="suppressAllComments" value="true" />  
    12         </commentGenerator>  
    13         <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->  
    14         <jdbcConnection driverClass="com.mysql.jdbc.Driver"  
    15                         connectionURL="jdbc:mysql://192.168.1.100:3306/test?serverTimezone=UTC" userId="bdgascloud"  
    16                         password="bdgascloud">  
    17         </jdbcConnection>  
    18         <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和  
    19            NUMERIC 类型解析为java.math.BigDecimal -->  
    20         <javaTypeResolver>  
    21             <property name="forceBigDecimals" value="false" />  
    22         </javaTypeResolver>  
    23   
    24         <!-- targetProject:生成PO类的位置 -->  
    25         <javaModelGenerator targetPackage="com.didispace.web.jdbc.po"  
    26                             targetProject="src/main/java">  
    27             <!-- enableSubPackages:是否让schema作为包的后缀 -->  
    28             <property name="enableSubPackages" value="false" />  
    29             <!-- 从数据库返回的值被清理前后的空格 -->  
    30             <property name="trimStrings" value="true" />  
    31         </javaModelGenerator>  
    32         <!-- targetProject:mapper映射文件生成的位置  
    33            如果maven工程只是单独的一个工程,targetProject="src/main/java"  
    34            若果maven工程是分模块的工程,targetProject="所属模块的名称",例如:  
    35            targetProject="ecps-manager-mapper",下同-->  
    36         <sqlMapGenerator targetPackage="mapXml"  
    37                          targetProject="src/main/resources">  
    38             <!-- enableSubPackages:是否让schema作为包的后缀 -->  
    39             <property name="enableSubPackages" value="false" />  
    40         </sqlMapGenerator>  
    41         <!-- targetPackage:mapper接口生成的位置 -->  
    42         <javaClientGenerator type="XMLMAPPER"  
    43                              targetPackage="com.didispace.web.jdbc.mapper"  
    44                              targetProject="src/main/java">  
    45             <!-- enableSubPackages:是否让schema作为包的后缀 -->  
    46             <property name="enableSubPackages" value="false" />  
    47         </javaClientGenerator>  
    48         <!-- 指定数据库表 -->  
    49         <table schema="" tableName="user"></table> 
    50     </context>  
    51 </generatorConfiguration>  

    最好先右键项目选择maven–>update project… 
    然后再maven build….     

      配置运行参数: 
      Goals:mybatis-generator:generate -e 
      Profiles:generatorConfig.xml 
      最后点击run等待完成 ,会发现如下文件被自动生成:

    • 第四步,在application.properties中添加
    
    

      spring.datasource.url=jdbc:mysql://192.168.1.100:3306/test?serverTimezone=UTC      #springboot会直接在容器中构建一个dataSource供我们使用。
      spring.datasource.username=bdgascloud
      spring.datasource.password=bdgascloud
      spring.datasource.driver-class-name=com.mysql.jdbc.Driver


    mybatis.typeAliasesPackage=com.didispace.web.jdbc.po mybatis.mapperLocations=classpath:mapXml/UserMapper.xml
    • 第五步,在主application类中添加
     3 @MapperScan("com.didispace.web.jdbc.mapper")
     4 @SpringBootApplication
     5 //@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
     6 public class HelloApplication {
     7
     8     public static void main(String[] args) {
     9         SpringApplication.run(HelloApplication.class, args);
    10     }
    11 }

    最后在controller中执行方法,页面展示效果

     1 @RestController
     2 public class HelloController {
     3     @Autowired
     4     private UserMapper userMapper;
     5     
     6     @RequestMapping("/hello")
     7     public String index() {
     8          
    9
    User user = userMapper.selectByPrimaryKey(1); 10
    11 return "Hello SpringBoot"+user.getName(); 12 13 } 14 15 }

    至此SpringCloud+MyBatis搭建成功!


    注释一:Mybatis和Hibernate框架的区别

    1. 说起Hibernate和MyBatis最大的区别,用很宽泛的话讲就是hibernate是自动的,mybatis是半自动的。自动指的是hibernate因为有良好的映射机制,针对高级查询,也可以不必手动编写sql,开发者可以更关注于业务逻辑而不用担心sql的生成和结果映射。mybatis半自动指的是它在做高级查询时,必须手动写sql以及resultMap。所以说,mybatis比hibernate开发工作量大。
    2. 第二点就是在sql优化方面,hibernate默认是会把表中所有的列都查出来的,而mybatis是自己指定要查哪些列。当然,hibernate允许自己指定查什么,但是就会破坏hibernate开发的简洁性。所以mybatis在sql优化上还是比hibernate灵活的。
    3. 第三点hibernate自带日志统计,而mybatis需要依靠log4j来实现
    4. 第四点hibernate强大的数据库无关性,只需在xml文件中配置驱动和方言,就可以实现和不同数据库的交互。而mybatis的所有sql和所使用的数据库有直接关系,一旦变更数据库,那么你的sql语句基本就是要修改了。
    5. 第五点随便提一句,mybatis比hibernate更加适合开发复杂查询的项目,且更容易上手,从第一点就可以看出来。

    注释二:Maven中构建插件的标签

    注释三:生成 po 和 mapper,都会生成 Example 类和其对应的 CURD方法(用于辅助查询等)如果不需要在 table 标签里将要生成的方法给关掉即可,代码如下:

     <table tableName="user"

            enableCountByExample="false"

      enableUpdateByExample="false"

      enableDeleteByExample="false"

      enableSelectByExample="false"

      selectByExampleQueryId="false">

    </table>

    注释四:update project本身是更新项目的意思。当Maven工程被做了一些改变后(主要是结构上的改变),必须让maven重新生成或修改相关文件。否则eclipse将不知道变化。这时候需要运行“update project”来更新相对应的“eclipse的.classpath”文件,来更新它,让eclipse知道这个包是buildpath。

    注释五:当没有设置该属性时,*.Mapper.xml文件里parameterType必须为类的全路径 <insert id="insertSelective" parameterType="com.didispace.web.jdbc.po.User">,加上后为 <insert id="insertSelective" parameterType="User">即可。

    注释六:之前是直接在Mapper类上面添加注解@Mapper,这种方式要求每一个mapper类都需要添加此注解,麻烦,通过使用@MapperScan可以指定要扫描的Mapper类的包的路径(支持多路径)。

  • 相关阅读:
    Typescript---01 数据类型
    微信小程序开发01 --- 微信小程序项目结构介绍
    C# 高级编程05----常用修饰符
    C# 高级编程04----类
    C# 高级编程02----手动创建C#程序
    C# 高级编程03----细节内容
    C# 高级编程01----.Net基础介绍
    Docker----起步(2)----在Ubuntu上安装最新版的Docker CE
    Microsoft Graph API -----起题 Graph API
    Docker----与Asp.net core 的完美结合,在docker容器中创建Asp.Net Core 项目
  • 原文地址:https://www.cnblogs.com/king-brook/p/9485821.html
Copyright © 2020-2023  润新知