文档章节

Spring Boot整合Mybatis实例

庞陆阳
 庞陆阳
发布于 2018/06/27 18:53
字数 1226
阅读 69
收藏 4
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 本文将简单的演示在Spring Boot使用Mybatis的两种方式:使用注解的方式、使用XML配置的方式。 **一、使用注解方式使用Mybatis** 所谓无配置注解指的是不使用xml配置,所有和Mybatis相关的映射都使用注解来完成(包括Mapper扫描、查询结果与entity的映射等)。 **1.1 在pom.xml文件中添加必要依赖如下** ``` org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.1 org.springframework.boot< spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-web mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test ``` 在所添加的依赖中,我们简单解说一下mybatis-spring-boot-starter,mybatis-spring-boot-starter可以帮助你在Spring Boot中快速构建Mybatis应用,在Spring Boot中使用此starter有如下好处: - 减少代码模板(几乎不需要); - 减少XML配置; - 自动检测存在的DataSource; - 自动使用SqlSessionFactoryBean传递DataSource作为一个输入创建和注册一个SqlSessionFactory实例; - 自动使用SqlSessionFactory创建和注册一个SqlSessionTemplate实例; - 自动扫描mapper,连接这些mapper和SqlSessionTemplate并注册mapper到spring上下文,这样一来这些mapper就可以被注入为您的bean。 **1.2 application.properties配置** ``` mybatis.type-aliases-package=com.learnspringboot.mybatis.entity spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ron_intelligence_system?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=true&allowMultiQueries=true&serverTimezone=Asia/Hong_Kong spring.datasource.username=root spring.datasource.password=111111 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.tomcat.max-wait=10000 spring.datasource.tomcat.max-active=50 spring.datasource.tomcat.test-on-borrow=true spring.datasource.testWhileIdle=true spring.datasource.timeBetweenEvictionRunsMillis=60001 ``` springboot会自动加载spring.datasource.*相关配置,数据源就会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中,然而这些过程你都不用管,这些都是自动完成的,直接拿起来使用就行了。 在启动类中添加对mapper包扫描@MapperScan ``` @SpringBootApplication @MapperScan("com.learnspringboot.mybatis.mapper") public class MybatisApplication { public static void main(String[] args) { SpringApplication.run(MybatisApplication.class, args); } } ``` 或者直接在Mapper类上面添加注解 @Mapper,建议使用上面那种,不然每个mapper加个注解也挺麻烦的。 **1.3 开发Mapper** ``` public interface BlogTypeMapper { @Select("select * from blog_type") @Results({ @Result(property = "id",column = "id"), @Result(property = "btId",column = "bt_id"), @Result(property = "typeTxt",column = "type_txt"), @Result(property = "userId",column = "user_id"), @Result(property = "crtTime",column = "crt_time") }) List getAll(); @Select("select * from blog_type where bt_id=#{btId}") @Results({ @Result(property = "id",column = "id"), @Result(property = "btId",column = "bt_id"), @Result(property = "typeTxt",column = "type_txt"), @Result(property = "userId",column = "user_id"), @Result(property = "crtTime",column = "crt_time") }) BlogType getOne(String btId); @Insert("insert into blog_type(bt_id,type_txt,user_id,crt_time) values(#{btId},#{typeTxt},#{userId},#{crtTime})") void insert(BlogType type); @Update("update blog_type set type_txt=#{typeTxt},user_id=#{userId},crt_time=#{crtTime} where bt_id=#{btId}") void update(BlogType type); @Delete("delete from blog_type where bt_id=#{btId}") void delete(String btId); } ``` - @Select 是查询类的注解,所有的查询均使用这个 - @Result 修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。 - @Insert 插入数据库使用,直接传入实体类会自动解析属性到对应的值 - @Update 负责修改,也可以直接传入对象 - @Delete 负责删除 **1.4 使用** 第三步基本上完成了Dao的开发,在需要使用的地方使用@Autowired注解基本就可使用,我们使用单元测试进行测试。 ``` @RunWith(SpringRunner.class) @SpringBootTest public class MybatisApplicationTests { @Autowired private BlogTypeMapper blogTypeMapper; @Test public void testInsert() { System.out.println("----------测试插入------"); BlogType type=new BlogType(); type.setBtId("455550e8ba444f8aabdd696a0976a6bc"); type.setTypeTxt("Spring Boot MyBatis 实例讲解"); type.setUserId("80bda1819d4a4619b44750bfc3013183"); type.setCrtTime(new Date()); blogTypeMapper.insert(type); type.setBtId("455550e8ba444f8aabdd696a0976a6ba"); type.setTypeTxt("Spring Boot系列"); blogTypeMapper.insert(type); type.setBtId("455550e8ba444f8aabdd696a0976a6bb"); type.setTypeTxt("Spring Boot系列哈哈哈"); blogTypeMapper.insert(type); testQuery(); } @Test public void testUpdate(){ System.out.println("----------测试更新------"); BlogType type=blogTypeMapper.getOne("455550e8ba444f8aabdd696a0976a6bb"); type.setTypeTxt("学习Spring Boot Mybatis"); blogTypeMapper.update(type); type = blogTypeMapper.getOne("455550e8ba444f8aabdd696a0976a6bb"); System.out.println(type.getBtId()+"------>"+type.getTypeTxt()); } @Test public void testQuery(){ List list=blogTypeMapper.getAll(); System.out.println("----------查询数据------"); list.stream().forEach(item->{ System.out.println(item.getBtId()+"------>"+item.getTypeTxt()); }); } @Test public void testDelete(){ System.out.println("----------测试删除------"); blogTypeMapper.delete("455550e8ba444f8aabdd696a0976a6bb"); testQuery(); } } ``` **二、使用XML配置的方式使用Mybatis** pom文件配置与上面所描述的一致,这里不再赘述。只是使用XML配置的方式,我们需要在配置文件中增加实体类映射xml文件的配置路径以及Mybatis基础配置文件的路径。在application.properties新增以下配置: ``` mybatis.config-locations=classpath:mybatis/mybatis-config.xml mybatis.mapper-locations=classpath:mybatis/mapper/*.xml ``` **2.1 mybatis-config.xml 配置(实例以最简单的模式演示)** ``` ``` **2.2 添加BlogType映射文件** ``` id, bt_id, type_txt, user_id, crt_time select from blog_type where bt_id = #{btId} select from blog_type delete from blog_type where bt_id = #{btId} insert into blog_type (id, bt_id, type_txt, user_id, crt_time) values (#{id}, #{btId}, #{typeTxt}, #{userId}, #{crtTime}) update blog_type set type_txt = #{typeTxt}, user_id = #{userId}, crt_time = #{crtTime} where bt_id = #{btId} ``` **2.3 编写Dao层代码** ``` public interface BlogTypeMapper { List getAll(); BlogType getOne(String btId); void insert(BlogType type); void update(BlogType type); void delete(String btId); } ```

本文转载自:https://blog.csdn.net/zyhlwzy/article/details/79088577

共有 人打赏支持
庞陆阳
粉丝 13
博文 103
码字总数 46463
作品 0
郑州
后端工程师
私信 提问
微服务 SpringBoot 2.0(九):整合Mybatis

我是SQL小白,我选Mybatis —— Java面试必修 引言 在第五章我们已经整合了Thymeleaf页面框架,第七章也整合了JdbcTemplate,那今天我们再结合数据库整合Mybatis框架 在接下来的文章中,我会...

阿郎_
2018/09/30
0
0
Spring Boot学习笔记

多模块开发 [SpringBoot学习]-IDEA创建Gradle多Module结构的SpringBoot项目 RabbitMQ RabbitMQ 安装 linux安装RabbitMQ详细教程 Ubuntu 16.04 RabbitMq 安装与运行(安装篇) ubantu安装...

OSC_fly
2018/07/26
0
0
mybatisplus-spring-boot-starter 1.0.0 发布

mybatisplus-spring-boot-starter 为 Mybatis-Plus 快速集成 spring-boot 简化配置而生,不在需拿 MyBatis 和 Hibernate相比, mybatis-plus 作为 mybatis 的好拍档补充了它的短板,让 myba...

青苗
2017/05/05
2.1K
14
mybatisplus-spring-boot-starter 1.0.1 发布

mybatisplus-boot-starter 为 mybaits-plus 快速集成 spring-boot 简化配置而生,让您不在为对比 MyBatis 和 Hibernate 而烦恼 mybatis-plus 作为 mybatis 的好拍档补充了它的短板,让 myba...

青苗
2017/05/16
2.3K
4
mybatisplus-spring-boot-starter 1.0.2 发布,代号:清风

mybatisplus-boot-starter 为 mybaits-plus 快速集成 spring-boot 简化配置而生,让您不在为对比 myBatis 和 hibernate 而烦恼 mybatis-plus 作为 mybatis 的好拍档补充了它的短板,让 myba...

青苗
2017/06/26
1K
8

没有更多内容

加载失败,请刷新页面

加载更多

搭建vagrant

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。 详细操作步骤: 工具及环境介绍: 工具及环境 版本 下载地址 宿主机环境 win7 x64 旗舰版 http://msdn.itellyou.cn/ Virtual...

echojson
30分钟前
0
0
深入理解java虚拟机-垃圾收集器与内存分配策略

垃圾收集器与内存分配策略 引用计数法 就是给对象添加一个计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1,计数器为0的对象就是不可能再被使用的。 缺点:无法...

须臾之余
49分钟前
6
0
Python+Appium自动化测试环境搭建

1.Android SDK 下载SDK并配置系统环境变量ANDROID_HOME。 2.Appium 2.1 直接下载安装 官网下载安装appium-desktop-setup.exe。 2.2 通过npm下载安装 appium本质是一个nodejs库所以要先安装n...

维他ViTa
今天
4
0
MacOS安装单机版HBase

MacOS安装HBase,必然是用于测试了,从简入手、从简配置。 直接通过brew安装即可: brew install hbase 成功安装后,验证是否成功,如果不出意外的话,应该有如下输出: RippleMBP:~ userna...

RippleChan
今天
4
0
linux下oracle随操作系统启动而启动

大家一定还记得,我们在windows下安装oracle后,重起windows,数据库会自动启动,但在linux下,如果我们重起了操作系统, 就会发现数据库需要手工去输入,这个本来有好处,让dba知道操作系统已经重起...

突突突酱
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部