SpringBoot:与MyBatis合作
MyBatis是一个SQL映射框架,支持自定义SQL,存储过程和高级映射。
SpringBoot不为MyBatis集成提供官方支持,但MyBatis社区为MyBatis构建了SpringBoot入门程序。
您可以在http://blog.mybatis.org/2015/11/mybatis-spring-boot-released.html上了解有关SpringBoot MyBatis Starter发行公告的信息,还可以在GitHub https://github.com上探索源代码。 / mybatis / mybatis-spring-boot 。
创建一个SpringBoot Maven项目并添加以下MyBatis Starter依赖项。
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.0.0</version>
</dependency>
我们将重用在上一篇文章SpringBoot中创建的User.java,schema.sql和data.sql文件:使用JdbcTemplate
用很少的数据库操作创建MyBatis SQL Mapper接口UserMapper.java ,如下所示:
package com.sivalabs.demo.domain;public interface UserMapper
{void insertUser(User user);User findUserById(Integer id);List<User> findAllUsers();
}
我们需要创建Mapper XML文件来为对应的Mapper接口方法定义对映射的SQL语句的查询。
在src / main / resources / com / sivalabs / demo / mappers /目录中创建UserMapper.xml文件,如下所示:
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.sivalabs.demo.mappers.UserMapper"><resultMap id="UserResultMap" type="User"><id column="id" property="id" /><result column="name" property="name" /><result column="email" property="email" /></resultMap><select id="findAllUsers" resultMap="UserResultMap">select id, name, email from users</select><select id="findUserById" resultMap="UserResultMap">select id, name, email from users WHERE id=#{id}</select><insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">insert into users(name,email) values(#{name},#{email})</insert>
</mapper>
这里要观察的几件事是:
- Mapper XML中的命名空间应与Mapper接口的完全限定名称(FQN)相同
- 语句ID值应与Mapper接口方法名称相同。
- 如果查询结果列名称与bean属性名称不同,则可以使用<resultMap>配置在列名称及其对应的bean属性名称之间提供映射。
MyBatis还提供基于注释的查询配置,而无需Mapper XML。
我们可以创建UserMapper.java接口,并使用注释配置映射的SQL,如下所示:
public interface UserMapper
{@Insert("insert into users(name,email) values(#{name},#{email})")@SelectKey(statement="call identity()", keyProperty="id",before=false, resultType=Integer.class)void insertUser(User user);@Select("select id, name, email from users WHERE id=#{id}")User findUserById(Integer id);@Select("select id, name, email from users")List<User> findAllUsers();}
SpringBoot MyBatis入门程序提供以下MyBatis配置参数,我们可以使用这些参数自定义MyBatis设置。
mybatis.config = mybatis config file name
mybatis.mapperLocations = mappers file locations
mybatis.typeAliasesPackage = domain object's package
mybatis.typeHandlersPackage = handler's package
mybatis.check-config-location = check the mybatis configuration exists
mybatis.executorType = mode of execution. Default is SIMPLE
在application.properties中配置typeAliasesPackage和mapperLocations 。
mybatis.typeAliasesPackage=com.sivalabs.demo.domain
mybatis.mapperLocations=classpath*:**/mappers/*.xml
创建入口点类SpringbootMyBatisDemoApplication.java。
@SpringBootApplication
@MapperScan("com.sivalabs.demo.mappers")
public class SpringbootMyBatisDemoApplication
{public static void main(String[] args){SpringApplication.run(SpringbootMyBatisDemoApplication.class, args);}
}
观察到我们已经使用@MapperScan(“ com.sivalabs.demo.mappers”)批注指定在何处查找Mapper接口。
现在创建一个JUnit测试类并测试我们的UserMapper方法。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(SpringbootMyBatisDemoApplication.class)
public class SpringbootMyBatisDemoApplicationTests
{@Autowiredprivate UserMapper userMapper;@Testpublic void findAllUsers() {List<User> users = userMapper.findAllUsers();assertNotNull(users);assertTrue(!users.isEmpty());}@Testpublic void findUserById() {User user = userMapper.findUserById(1);assertNotNull(user);}@Testpublic void createUser() {User user = new User(0, "Siva", "siva@gmail.com");userMapper.insertUser(user);User newUser = userMapper.findUserById(user.getId());assertEquals("Siva", newUser.getName());assertEquals("siva@gmail.com", newUser.getEmail());}
}
- 您可以在http://blog.mybatis.org/p/products.html上了解有关MyBatis和Spring集成的更多信息,并
http://www.mybatis.org/spring/ 。
翻译自: https://www.javacodegeeks.com/2016/03/springboot-working-mybatis.html
SpringBoot:与MyBatis合作相关推荐
- Java项目:宠物商城系统(java+Springboot+Maven+mybatis+Vue+mysql)
源码获取:博客首页 "资源" 里下载! 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...
- Java项目:食品溯源系统(java+Springboot+Maven+mybatis+Vue+mysql+wd)
源码获取:博客首页 "资源" 里下载! 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...
- Java项目:精品养老院管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)
源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括:通知公告,老人管理,护工管理,问答管理等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8. ...
- Java项目:基于遗传算法学校排课系统(java+Springboot+Maven+mybatis+Vue+Mysql)
源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 排课管理,课程管理,讲师管理,班级管理,学生管理,教学资料,学习文档,在线测试,教材列表,教学设计,帮助中心 ...
- Java项目:花店商城系统(java+Springboot+Maven+mybatis+Vue+Mysql)
源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 商品的分类展示,用户的注册登录,购物车,订单结算,购物车加减,后台商品管理,分类管理,订单管理等等功能. 二 ...
- Java项目:平行志愿管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)
源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 系统管理,招生计划,学生管理,录取结果,自动分配,调剂管理等等. 二.项目运行 环境配置: Jdk1.8 + ...
- Java项目:学生管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)
源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 学生管理,教师管理,课程管理,成绩管理,系统管理等等. 二.项目运行 环境配置: Jdk1.8 + Tomc ...
- Java项目:医院管理系统(java+Springboot+Maven+Mybatis+Vue+Mysql)
源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括:医院挂号,退号,缴费,退费,检查申请单开立,科室管理,医生开单,挂号级别,检验项目开立,检查项目开立,医生接诊 ...
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...
SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...
- SpringBoot+MySQL+MyBatis+Shiro+AdminLTE
SpringBoot+MySQL+MyBatis+Shiro+AdminLTE 转载于:https://www.cnblogs.com/ddwk/p/11595682.html
最新文章
- 大工计算机基础在线3,大工16秋《计算机应用基础》在线测试3-满分100分.pdf
- 关于举办第十五届全国大学生 智能汽车竞赛的通知
- 说说pgpool-II的 health check
- python 文件操作 os.readlines()函数用法
- C++中的类加多线程代码修炼
- kivy中文手册python_K-Meleon
- php mysql删除失败_php+MySQL实战案例【七】数据编辑、删除
- 美团面试一道场景设计题
- 【JS】变量、作用域和内存问题
- 汇编环境的搭建(windows 10 + debug)
- python爬取b站403_使用Python爬取B站全站视频信息
- 台电t30_这次我真的是服了,8000mA的T30续航力真心不虚
- Mysql 什么是聚集索引和非聚集索引?
- Django文档是如何组织的?
- 华为OD社招Java岗面经,已OFFER
- oracle 层次查询 connect by
- Ubuntu16.04、18.04换清华源
- C语言实现小波分解,提取近似与细节分量,包含详细例程
- 联想G470自带的无线网卡总是不能上网
- Android开发之“友录”
热门文章
- Hadoop入门(一)概念与单机安装
- html session 登录页面跳转页面跳转页面,session失效后跳转到登陆页面
- 输入一个英文句子,翻转句子中单词的顺序 例如输入“I am a student.”,则输出“student. a am I”。
- java把控件跑挂了_Java代码动态修改 ConstraintLayout 内控件布局的辅助类
- 工程打包是什么意思_太生动形象了!500个建筑施工3D动画演示,施工工艺一目了然,零基础工程人也能看懂...
- 一文理类加载相关知识:类加载器、双亲委派、SPI
- Mybatis报错:nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘XXX‘ not found
- 如何用JS实现音乐播放、暂停
- http 安全性和幂等性_HTTP方法:幂等性和安全性
- run spark pi_Spark Run本地设计模式