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添加插件引用
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<dependencies>
<dependency>
<groupId> mysql</groupId>
<artifactId> mysql-connector-java</artifactId>
<version> 5.1.39</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<phase>package</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!--允许移动生成的文件 -->
<verbose>true</verbose>
<!-- 是否覆盖 -->
<overwrite>true</overwrite>
<!-- 自动生成的配置 -->
<configurationFile>
src/main/resources/mybatis-generator.xml
</configurationFile>
</configuration>
</plugin>
新建配置文件generatorConfig.xml,配置文件需配置数据库jar包位置,生成的文件存放位置等信息:
<?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>
<!--mysql 连接数据库jar 这里选择自己本地位置-->
<classPathEntry location="F:\dev-space\repo\mysql\mysql-connector-java\5.1.45\mysql-connector-java-5.1.45.jar" />
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://192.168.1.100:3306/test?serverTimezone=UTC" userId="bdgascloud"
password="bdgascloud">
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.didispace.web.jdbc.po"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置
如果maven工程只是单独的一个工程,targetProject="src/main/java"
若果maven工程是分模块的工程,targetProject="所属模块的名称",例如:
targetProject="ecps-manager-mapper",下同-->
<sqlMapGenerator targetPackage="mapXml"
targetProject="src/main/resources">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.didispace.web.jdbc.mapper"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table schema="" tableName="user"></table>③
</context>
</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类中添加
@MapperScan("com.didispace.web.jdbc.mapper")⑥
@SpringBootApplication
//@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
最后在controller中执行方法,页面展示效果
@RestController
public class HelloController {
@Autowired
private UserMapper userMapper; @RequestMapping("/hello")
public String index() {
9 User user = userMapper.selectByPrimaryKey(1);
return "Hello SpringBoot"+user.getName(); } }

至此SpringCloud+MyBatis搭建成功!
注释一:Mybatis和Hibernate框架的区别
- 说起Hibernate和MyBatis最大的区别,用很宽泛的话讲就是hibernate是自动的,mybatis是半自动的。自动指的是hibernate因为有良好的映射机制,针对高级查询,也可以不必手动编写sql,开发者可以更关注于业务逻辑而不用担心sql的生成和结果映射。mybatis半自动指的是它在做高级查询时,必须手动写sql以及resultMap。所以说,mybatis比hibernate开发工作量大。
- 第二点就是在sql优化方面,hibernate默认是会把表中所有的列都查出来的,而mybatis是自己指定要查哪些列。当然,hibernate允许自己指定查什么,但是就会破坏hibernate开发的简洁性。所以mybatis在sql优化上还是比hibernate灵活的。
- 第三点hibernate自带日志统计,而mybatis需要依靠log4j来实现
- 第四点hibernate强大的数据库无关性,只需在xml文件中配置驱动和方言,就可以实现和不同数据库的交互。而mybatis的所有sql和所使用的数据库有直接关系,一旦变更数据库,那么你的sql语句基本就是要修改了。
- 第五点随便提一句,mybatis比hibernate更加适合开发复杂查询的项目,且更容易上手,从第一点就可以看出来。
注释二:Maven中构建插件的标签
注释三:生成 po 和 mapper,都会生成 Example 类和其对应的 CURD方法(用于辅助查询等)如果不需要在 table 标签里将要生成的方法给关掉即可,代码如下:
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类的包的路径(支持多路径)。
SpringCloud+MyBatis+Redis整合—— 超详细实例(一)的更多相关文章
- SpringCloud+MyBatis+Redis整合—— 超详细实例(二)
2.SpringCloud+MyBatis+Redis redis①是一种nosql数据库,以键值对<key,value>的形式存储数据,其速度相比于MySQL之类的数据库,相当于内存读写 ...
- Struts2+Spring4+Hibernate4整合超详细教程
Struts2.Spring4.Hibernate4整合 超详细教程 Struts2.Spring4.Hibernate4整合实例-下载 项目目的: 整合使用最新版本的三大框架(即Struts2.Sp ...
- SpringBoot + Mybatis + Redis 整合入门项目
这篇文章我决定一改以往的风格,以幽默风趣的故事博文来介绍如何整合 SpringBoot.Mybatis.Redis. 很久很久以前,森林里有一只可爱的小青蛙,他迈着沉重的步伐走向了找工作的道路,结果发 ...
- ssh框架整合---- spring 4.0 + struts 2.3.16 + maven ss整合超简单实例
一 . 需求 学了这么久的ssh,一直都是别人整合好的框架去写代码,自己实际动手时才发现框架配置真是很坑爹,一不小心就踏错,真是纸上得来终觉浅! 本文将记录整合struts + spring的过程 , ...
- 7.springboot+mybatis+redis整合
选择生成的依赖 选择保存的工程路径 查询已经生成的依赖,并修改mysql的版本 <dependencies> <dependency> <groupId>org.s ...
- Spring、SpringMVC、Hibernate整合 ----超详细教程
一.数据库表 /* Navicat MySQL Data Transfer Source Server : 本地连接 Source Server Version : 50720 Source Host ...
- 超详细,多图文介绍redis集群方式并搭建redis伪集群
超详细,多图文介绍redis集群方式并搭建redis伪集群 超多图文,对新手友好度极好.敲命令的过程中,难免会敲错,但为了截好一张合适的图,一旦出现一点问题,为了好的演示效果,就要从头开始敲.且看且珍 ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作
redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存 ...
- 超详细的 Redis Cluster 官方集群搭建指南
今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细. 安装ruby环境 因为官方提供的创建集群的工具是用ruby写的,需要ruby2.2.2+版本支持,rub ...
随机推荐
- scrollspy.js--bug
/** * 20140505 14.33 ycx * scrollspy.js中存在的bug!!!---为什么ui.tabs必须在scrollspy.js中的window.onload之前执行,也就是 ...
- 自定义Panel中添加依赖属性需要注意的问题
今天帮忙同事调试一个自定义Panel的问题, 很奇怪, 利用Binding可以通过ItemSource来添加控件,但是在Listbox的xaml里添加几个ListboxItem却报异常: Visual ...
- 开发框架:AdminLTE
ylbtech-开发框架:AdminLTE 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 1. 2. 5.返回顶部 1. https://adminlte.io 2. 6.返 ...
- stm32 奇怪的位赋值问题 出错了
转载请注明出处:http://blog.csdn.net/qq_26093511/article/category/6094215 1.在51单片机里 ,下面这两种操作方法都是一样的,没有什么问题! ...
- rails Ajax--利用Jquery
view function init_tree(product_name) { var htmlobj=$.ajax({url: "get_all_file?param=" + p ...
- C语言学习笔记--const 和 volatile关键字
1.const关键字 (1)const 修饰的变量是只读的,它不是真正的常量,本质还是变量,只是告诉编译器不能出现在赋值号左边! (2)const 修饰的局部变量在栈上分配空间 (3)const 修饰 ...
- 使用struts2进行文件下载以及下载权限控制的例子
本测试有两个模块,一个是文件上上传,一个是文件下载,文件下载的时候会检查是否足有权限,如果没有,就会转发到登录页面,如果有权限,就会直接启动下载程序,给浏览器一个输出流. 下面直接上我的代码: 登录表 ...
- MySql集合查询
SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作. 集合操作主要包括并操作UNION.交操作INTERSECT.差操作EXCEPT. 注意,参加集合操作的各查询结果 ...
- Hadoop添加节点datanode(生产环境)
Hadoop添加节点datanode 博客分类: hadoop HadoopSSHJDKXML工作 1.部署hadoop 和普通的datanode一样.安装jdk,ssh 2.修改host ...
- 使用 Node.js 实现简单的 Webhook
距离 Node.js 这个东西出来已经过了好久了,感觉现在的前端如果不会点 Node.js 就有点太落后于时代啦.我接触它是从去年暑假开始的,当时在写一个比较神奇的东西,就顺便接触了一下.虽然网传 n ...