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

1、SpringCloud+MyBatis

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

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

  • 第一步,在SpringCloud环境中的pom.xml中加入:
 1 
 2         <dependency>  
 3             <groupId>org.mybatis.spring.bootgroupId>  
 4             <artifactId>mybatis-spring-boot-starterartifactId>  
 5             <version>1.3.0version>  
 6         dependency>  
 7         <dependency>  
 8             <groupId>mysqlgroupId>  
 9             <artifactId>mysql-connector-javaartifactId>  
10         dependency>  
11 
  • 第二步,在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文件的标签中通过maven添加插件引用

 1         <plugin>  
 2                 <groupId>org.mybatis.generatorgroupId>  
 3                 <artifactId>mybatis-generator-maven-pluginartifactId>  
 4                 <version>1.3.5version>  
 5                 <dependencies>  
 6                     <dependency>  
 7                         <groupId> mysqlgroupId>  
 8                         <artifactId> mysql-connector-javaartifactId>  
 9                         <version> 5.1.39version>  
10                     dependency>  
11                     <dependency>  
12                         <groupId>org.mybatis.generatorgroupId>  
13                         <artifactId>mybatis-generator-coreartifactId>  
14                         <version>1.3.5version>  
15                     dependency>  
16                 dependencies>  
17                 <executions>  
18                     <execution>  
19                         <id>Generate MyBatis Artifactsid>  
20                         <phase>packagephase>  
21                         <goals>  
22                             <goal>generategoal>  
23                         goals>  
24                     execution>  
25                 executions>  
26                 <configuration>  
27                       
28                     <verbose>trueverbose>  
29                       
30                     <overwrite>trueoverwrite>  
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       
 7     <classPathEntry location="F:\dev-space\repo\mysql\mysql-connector-java\5.1.45\mysql-connector-java-5.1.45.jar" />  
 8     <context id="testTables" targetRuntime="MyBatis3">  
 9         <commentGenerator>  
10               
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           
20         <javaTypeResolver>  
21             <property name="forceBigDecimals" value="false" />  
22         javaTypeResolver>  
23   
24           
25         <javaModelGenerator targetPackage="com.didispace.web.jdbc.po"  
26                             targetProject="src/main/java">  
27               
28             <property name="enableSubPackages" value="false" />  
29               
30             <property name="trimStrings" value="true" />  
31         javaModelGenerator>  
32           
36         <sqlMapGenerator targetPackage="mapXml"  
37                          targetProject="src/main/resources">  
38               
39             <property name="enableSubPackages" value="false" />  
40         sqlMapGenerator>  
41           
42         <javaClientGenerator type="XMLMAPPER"  
43                              targetPackage="com.didispace.web.jdbc.mapper"  
44                              targetProject="src/main/java">  
45               
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必须为类的全路径 ,加上后为 即可。

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

转载于:https://www.cnblogs.com/king-brook/p/9485821.html

你可能感兴趣的:(SpringCloud+MyBatis+Redis整合—— 超详细实例(一))