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中配置typeAliasesPackagemapperLocations

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合作相关推荐

  1. Java项目:宠物商城系统(java+Springboot+Maven+mybatis+Vue+mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...

  2. Java项目:食品溯源系统(java+Springboot+Maven+mybatis+Vue+mysql+wd)

    源码获取:博客首页 "资源" 里下载! 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...

  3. Java项目:精品养老院管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括:通知公告,老人管理,护工管理,问答管理等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8. ...

  4. Java项目:基于遗传算法学校排课系统(java+Springboot+Maven+mybatis+Vue+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 排课管理,课程管理,讲师管理,班级管理,学生管理,教学资料,学习文档,在线测试,教材列表,教学设计,帮助中心 ...

  5. Java项目:花店商城系统(java+Springboot+Maven+mybatis+Vue+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 商品的分类展示,用户的注册登录,购物车,订单结算,购物车加减,后台商品管理,分类管理,订单管理等等功能. 二 ...

  6. Java项目:平行志愿管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 系统管理,招生计划,学生管理,录取结果,自动分配,调剂管理等等. 二.项目运行 环境配置: Jdk1.8 + ...

  7. Java项目:学生管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 学生管理,教师管理,课程管理,成绩管理,系统管理等等. 二.项目运行 环境配置: Jdk1.8 + Tomc ...

  8. Java项目:医院管理系统(java+Springboot+Maven+Mybatis+Vue+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括:医院挂号,退号,缴费,退费,检查申请单开立,科室管理,医生开单,挂号级别,检验项目开立,检查项目开立,医生接诊 ...

  9. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...

  10. SpringBoot+MySQL+MyBatis+Shiro+AdminLTE

    SpringBoot+MySQL+MyBatis+Shiro+AdminLTE 转载于:https://www.cnblogs.com/ddwk/p/11595682.html

最新文章

  1. 大工计算机基础在线3,大工16秋《计算机应用基础》在线测试3-满分100分.pdf
  2. 关于举办第十五届全国大学生 智能汽车竞赛的通知
  3. 说说pgpool-II的 health check
  4. python 文件操作 os.readlines()函数用法
  5. C++中的类加多线程代码修炼
  6. kivy中文手册python_K-Meleon
  7. php mysql删除失败_php+MySQL实战案例【七】数据编辑、删除
  8. 美团面试一道场景设计题
  9. 【JS】变量、作用域和内存问题
  10. 汇编环境的搭建(windows 10 + debug)
  11. python爬取b站403_使用Python爬取B站全站视频信息
  12. 台电t30_这次我真的是服了,8000mA的T30续航力真心不虚
  13. Mysql 什么是聚集索引和非聚集索引?
  14. Django文档是如何组织的?
  15. 华为OD社招Java岗面经,已OFFER
  16. oracle 层次查询 connect by
  17. Ubuntu16.04、18.04换清华源
  18. C语言实现小波分解,提取近似与细节分量,包含详细例程
  19. 联想G470自带的无线网卡总是不能上网
  20. Android开发之“友录”

热门文章

  1. Hadoop入门(一)概念与单机安装
  2. html session 登录页面跳转页面跳转页面,session失效后跳转到登陆页面
  3. 输入一个英文句子,翻转句子中单词的顺序 例如输入“I am a student.”,则输出“student. a am I”。
  4. java把控件跑挂了_Java代码动态修改 ConstraintLayout 内控件布局的辅助类
  5. 工程打包是什么意思_太生动形象了!500个建筑施工3D动画演示,施工工艺一目了然,零基础工程人也能看懂...
  6. 一文理类加载相关知识:类加载器、双亲委派、SPI
  7. Mybatis报错:nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘XXX‘ not found
  8. 如何用JS实现音乐播放、暂停
  9. http 安全性和幂等性_HTTP方法:幂等性和安全性
  10. run spark pi_Spark Run本地设计模式