SpringBoot系列-整合Mybatis(注解方式)
上一篇文章《SpringBoot系列-整合Mybatis(XML配置方式)》介绍了XML配置方式整合的过程,本文介绍下SpringBoot通过注解方式整合Mybatis的过程。
一、常用注解说明
- @Mapper
可以给接口自动生成一个实现类,让spring对mapper接口的bean进行管理,并且可以省略去写复杂的xml文件。
- @Options
配置映射语句的属性。例如:@Options(useGeneratedKeys = true, keyColumn = "id"):指定表的自增主键并自动绑定到实体类对象。
- @Result
修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
- @Param
如果你的映射方法的形参有多个,这个注解使用在映射方法的参数上就能为它们取自定义名字。若不给出自定义名字,多参数(不包括 RowBounds 参数)则先以 "param" 作前缀,再加上它们的参数位置作为参数别名。例如 #{param1}, #{param2}。
- @Select、@Delete、@Insert、@Update
这四个注解分别代表将会被执行的 SQL 语句。它们用字符串数组(或单个字符串)作为参数。如果传递的是字符串数组,字符串之间先会被填充一个空格再连接成单个完整的字符串。
二、实战
新建一个spring boot项目spring-boot-mybatis-annotation,其他代码上一篇文章已经有了,下面列下注解版本的主要代码:
1.映射类UserMapper
@Mapper
public interface UserMapper {
/*
* 查询 所有用户
*/
@Select("SELECT * FROM user ")
List<User> queryAllUsers();
/*
* 新增数据,并把主键绑定到User实体类
*/
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into User(name,password) values (#{name},#{password})")
public int add(User user);
}
2.添加访问控制层
UserController代码如下:
/**
* UserController
*
* @Author: java_suisui
*/
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 查询 所有用户
*/
@GetMapping("/queryAllUsers")
public List<User> queryAllUsers() {
return userService.queryAllUsers();
}
@GetMapping("/add")
public User add(User user) {
int num = userService.add(user);
return user;
}
}
三、测试
1.测试查询所有用户
本地打开浏览器,访问http://localhost:8080/user/queryAllUsers,成功后返回如下结果:
[{"id":1,"name":"张三","password":"123456","sex":0,"des":"无备注"},
{"id":2,"name":"李四","password":"123456","sex":0,"des":"无备注"}]
2.测试新增用户
本地打开浏览器,访问http://localhost:8080/user/add?name=test1&password=123456,成功后返回如下结果:
{"id":13,"name":"test1","password":"123456","sex":null,"des":null}
四、注意事项
1.如果有很多Mapper接口如何一次性扫描
直接在程序启动类添加@MapperScan注解即可。
例如:
@MapperScan(basePackages= {"com.example.springboot.mybatisannotation.dao.mapper"})
2.SpringBoot Mybatis增加驼峰命名规则
因为是注解版,没有配置文件,所以SpringBoot增加驼峰命名需要增加一个自定义配置类(ConfigurationCustomizer)。
例如:
/**
* mybatis 注解版
*/
@Configuration
public class MybatisConfig {
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return new ConfigurationCustomizer() {
@Override
public void customize(org.apache.ibatis.session.Configuration configuration) {
configuration.setMapUnderscoreToCamelCase(true);//设置驼峰命名规则
}
};
}
}
到此SpringBoot整合Mybatis(XML配置方式)的功能已经全部实现,有问题欢迎留言沟通哦!
完整源码地址: https://github.com/suisui2019/springboot-study
推荐阅读
1.SpringBoot系列-整合Mybatis(XML配置方式)
限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。
关注下方公众号即可免费领取:

SpringBoot系列-整合Mybatis(注解方式)的更多相关文章
- SpringBoot系列-整合Mybatis(XML配置方式)
目录 一.什么是 MyBatis? 二.整合方式 三.实战 四.测试 本文介绍下SpringBoot整合Mybatis(XML配置方式)的过程. 一.什么是 MyBatis? MyBatis 是一款优 ...
- Spring Boot整合Mybatis(注解方式和XML方式)
其实对我个人而言还是不够熟悉JPA.hibernate,所以觉得这两种框架使用起来好麻烦啊. 一直用的Mybatis作为持久层框架, JPA(Hibernate)主张所有的SQL都用Java代码生成, ...
- 5、springcloud整合mybatis注解方式
1.上一篇学习了服务提供者provider,但是并不是单单就学习了服务提供者.中间还穿插使用了Hikari数据源和spring cloud整合mybatis.但是上篇使用mybatis时还是沿用了老的 ...
- SpringBoot整合Mybatis注解版---update出现org.apache.ibatis.binding.BindingException: Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1, param2]
SpringBoot整合Mybatis注解版---update时出现的问题 问题描述: 1.sql建表语句 DROP TABLE IF EXISTS `department`; CREATE TABL ...
- SpringBoot数据访问之整合mybatis注解版
SpringBoot数据访问之整合mybatis注解版 mybatis注解版: 贴心链接:Github 在网页下方,找到快速开始文档 上述链接方便读者查找. 通过快速开始文档,搭建环境: 创建数据库: ...
- springboot整合mybatis(注解)
springboot整合mybatis(注解) 1.pom.xml: <?xml version="1.0" encoding="UTF-8"?> ...
- MyBatis从入门到精通(第3章):MyBatis注解方式的基本使用
MyBatis 注解方式就是将 SQL 语句直接写在DAO层的接口上. 在黑马录制的2018年双元视频课:\08 SSM整合案例[企业权限管理系统]\07.订单操作 有使用MyBatis注解进行多表 ...
- SpringBoot系列之@Conditional注解用法简介
SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的 ...
随机推荐
- Spring 读取资源
Spring 读取资源 主要介绍3种方式(当然不止三种,但是这三种基本能应付大多需求)FileSystemResource:以文件的绝对路径方式进行访问ClassPathResourcee:以类路径的 ...
- svn+apache搭建版本控制服务器
Centos7(linux)搭建版本控制服务器(svn+apache) 1.简介: 版本控制服务器: 版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所 ...
- java内存模型和内存结构
java内存模型说的是多线程,网上可能会有写误导,并不是什么堆.栈.方法区,很多人都会搞混.说白了就是多线程中主线程和本地线程之间的一个数据可见性问题. jmm:java内存模型:jvm:java内存 ...
- MySQL必知必会(Create, Alter)
CREATE DATABASE mysql_crash_course_db; USE mysql_crash_course_db; CREATE TABLE customers ( cust_id i ...
- Gradle+Groovy基础篇
在Java项目中,有两个主要的构建系统:Gradle和Maven.构建系统主要管理潜在的复杂依赖关系并正确编译项目.还可以将已编译的项目以及所有资源和源文件打包到.war或.jar文件中.对于简单的构 ...
- linux gre隧道创建
目录 linux gre隧道创建 实验环境 实验目的 实验步骤 1.在host A(10.10.10.47)上面操作 2.在host B(192.168.0.118)上面操作 实验结果 还原实验环境 ...
- mysql主从复制原理及实践
Mysql主从复制原理及实践 mysql主从框架 MySQL主从架构是MySQL集群中最基本也是最常用的一种架构部署,能够满足很多业务需求,常见的有一主一从或者一主多从.可以防止单一主机的 ...
- nitacm20317 来自张司机的挑战书
题目:让你求从x到y中(1<=x<=y<=10^18),二进制一的个数最多的数是哪个,如果有多个相同的答案,输出最小的. 题目链接:https://www.nitacm.com/pr ...
- 把JSON转换成键值对
public static Dictionary<string, string> JsonStringToKeyValuePairs(string jsonStr) { char json ...
- Django 09
目录 多对多三种创建方式 全自动 纯手撸 半自动(推荐) form组件 校验数据 渲染标签 展示错误信息 validators校验器 钩子函数 补充 多对多三种创建方式 全自动 ManyToManyF ...