spring boot(7)-mybatis全注解化
关于配置数据库可以参考上一篇文章,这里只讲mybatis
pom.xml
- <!-- 引入mybatis -->
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>1.3.0</version>
- </dependency>
- <!-- mybatis分页插件 -->
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper-spring-boot-starter</artifactId>
- <version>1.1.1</version>
- </dependency>
<!-- 引入mybatis -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.0</version>
</dependency>
<!-- mybatis分页插件 -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.1.1</version>
</dependency>
基本SQL操作
- @Mapper
- public interface MybatisDao {
- @Select("select * from user where id = #{id}")
- public List<User> findById(User param);
@Mapper
public interface MybatisDao {@Select("select * from user where id = #{id}")public List<User> findById(User param);
扫描Mapper
- @MapperScan("hello.dao")
@MapperScan("hello.dao")
在配置类上添加以上注解,可以扫描dao包中的所有接口,替代在每个dao中写@Mapper注解,不过这样会提高耦合度。而@Mapper可以与dao自成一体,与@Controller、@Service遥相呼应,整体结构更优雅
驼峰命名
在properties中添加以下配置,在执行查询后,可以将数据库的NN_NN格式字段,在java结果集对象中自动转换成驼峰命名参数
- mybatis.configuration.mapUnderscoreToCamelCase=true
mybatis.configuration.mapUnderscoreToCamelCase=true
结果映射@Results
- @Results({
- @Result(property="nnNn",column="NN_NN")
- })
- @Select("select * from user")
- public List<Map> findAll();
@Results({@Result(property="nnNn",column="NN_NN") })@Select("select * from user") public List<Map> findAll();
使用List<Map>不用去维护pojo,适于用数据库字段不确定或经常变化的场景。但是程序的可读性、可维护性不如List<User>
可复用的@Results
- @Results(id="user",value={
- @Result(property="nnNn",column="NN_NN")
- })
@Results(id="user",value={@Result(property="nnNn",column="NN_NN")})
- @ResultMap("user")
@ResultMap("user")
打印SQL日志到控制台
- logging.level.你的包名.mybatis接口包=debug
logging.level.你的包名.mybatis接口包=debug
![](/assets/blank.gif)
分页
- @Service
- @Transactional
- public class HelloServiceImpl {
- @Autowired
- MybatisDao mybatisDao;
- public void find(){
- //分页插件: 查询第1页,每页10行
- Page<User> page =PageHelper.startPage(1, 10);
- mybatisDao.findAll();
- //数据表的总行数
- page.getTotal();
- //分页查询结果的总行数
- page.size();
- //第一个User对象,参考list,序号0是第一个元素,依此类推
- page.get(0);
- }
@Service
@Transactional
public class HelloServiceImpl {@AutowiredMybatisDao mybatisDao;public void find(){ //分页插件: 查询第1页,每页10行Page<User> page =PageHelper.startPage(1, 10); mybatisDao.findAll(); //数据表的总行数page.getTotal();//分页查询结果的总行数page.size();//第一个User对象,参考list,序号0是第一个元素,依此类推page.get(0);}
回传ID
- @Insert("insert into user(name) values(#{name})")
- @Options(useGeneratedKeys=true,keyProperty="id")
- public int add(User param);
@Insert("insert into user(name) values(#{name})")@Options(useGeneratedKeys=true,keyProperty="id") public int add(User param);
- User user = new User();
- user.setName("tom");
- mybatisDao.add(user);
- System.out.println("回传ID值:"+user.getId());
User user = new User();user.setName("tom");mybatisDao.add(user);System.out.println("回传ID值:"+user.getId());
![](/assets/blank.gif)
存储过程
- DELIMITER $$
- CREATE PROCEDURE `hello`(IN id_in VARCHAR(10),OUT name_out VARCHAR(10))
- BEGIN
- SELECT NAME INTO name_out FROM USER WHERE id=id_in;
- END$$
- DELIMITER ;
DELIMITER $$
CREATE PROCEDURE `hello`(IN id_in VARCHAR(10),OUT name_out VARCHAR(10))
BEGINSELECT NAME INTO name_out FROM USER WHERE id=id_in;END$$
DELIMITER ;
- @Select("call hello(#{id,mode=IN,jdbcType=VARCHAR},#{name,mode=OUT,jdbcType=VARCHAR})")
- @Options(statementType= StatementType.CALLABLE )
- public void call(User user);
@Select("call hello(#{id,mode=IN,jdbcType=VARCHAR},#{name,mode=OUT,jdbcType=VARCHAR})")@Options(statementType= StatementType.CALLABLE )public void call(User user);
- public void call(){
- User user = new User();
- user.setId("14");
- mybatisDao.call(user);
- System.out.println(user.getName());
public void call(){User user = new User();user.setId("14");mybatisDao.call(user);System.out.println(user.getName());
![](/assets/blank.gif)
spring boot(7)-mybatis全注解化相关推荐
- Spring Boot 实战 —— MyBatis(注解版)使用方法
原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...
- Spring Boot 整合 Mybatis Annotation 注解的完整 Web 案例
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 公司需要人.产品.业务和方向,方向又要人.产品.业务和方向,方向- 循环』 本文提纲 一 ...
- 详解spring boot mybatis全注解化
https://www.cnblogs.com/goloving/p/9125948.html https://www.jianshu.com/p/8cffcc105b3a https://blog. ...
- 3. mysql的注解驱动的三种方式_上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。...
1.引入依赖 org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot- ...
- Spring Boot 整合MyBatis(23)
Spring Boot 整合MyBatis Spring Boot 整合 Druid 引入依赖 配置 application.yml pring Boot 整合 tk.mybatis 引入依赖 配置 ...
- 干货必看|Spring Boot整合MyBatis框架详解
在开发中,我们通常会对数据库的数据进行操作,Sprirng Boot对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持.所以今天壹哥就给大家讲解一下,如何在SpringBoot环境中整合 ...
- 2021-5-10:Spring Boot整合MyBatis
Spring Boot整合MyBatis Spring Boot 整合MyBatis (一)基础环境搭建 1.数据准备 创建数据库.数据表并插入一定的数据 (1)创建博客数据库blog 在Navica ...
- Spring Boot + Security + MyBatis + Thymeleaf + Activiti 快速开发平台项目
项目介绍 Spring Boot + Security + MyBatis + Thymeleaf + Activiti 快速开发平台 基于 Layui 的后台管理系统模板,扩展 Layui 原生 U ...
- Spring Boot与MyBatis整合
2019独角兽企业重金招聘Python工程师标准>>> 数据库以MySQL为例 IDE:spring tool suite 1. 新建项目 file -> new -> ...
最新文章
- 【Android】启动过程:Bootloader-System/Recovery
- windows服务autofac注入quartz任务
- 安装 java decompiler_Eclipse离线安装Java Decompiler插件(反编译)
- 线性代数三之状压DP的矩阵加速——Quad Tiling,Bus公交线路
- Ajax+SpringMVC+JSON登录验证
- 数据结构最佳路径代码_【微服务】149:商品数据结构
- Egret入门学习日记 --- 第十六篇(书中 6.10~7.3节 内容)
- 【机械仿真】基于matlab GUI机械臂运动控制【含Matlab源码 063期】
- Icons Cube4Nano专业外置声卡设备机架、音视频会议的播放和录音设置
- ftp中转服务器,bat实现的ftp中转
- Mybatis 插件(plugins)
- Firefox选择哪个IE TAB
- 如何制定有效的项目章程?【含项目章程模板】
- 物联网技术,主要包括哪些核心技术
- Python Selenium 疑难杂症解方(四):上传文件
- 常用统计量及其常见分布
- word 宏命令批量把当前文件夹下的doc另存为docx格式
- 一个苏州IT人的5年挨踢经历-------面试,薪资,企业,经历全方位揭示(之二)
- 浅析N沟道增强型MOS管的工作原理
- 计算机应用基础win,计算机应用基础(Win 7+Office 2010)
热门文章
- xpr文件格式用什么打开
- Linux各版本内核下载地址
- Emacs学习使用之路(一)
- 6.10 通过屏幕截图功能快速插入网页图片 [原创Excel教程]
- 分享几个好用的易语言编程助手
- SQL高级查询案例讲解与分析
- ​做让用户安心合规的智能家居产品——智能家庭用户个人信息保护方案
- 大数据推荐算法概念简述
- 当远程连接MySQL数据库的时候显示Can't connect to MySQL server (10060
- java监测服务器信息(cpu,内存,运行时间等),springboot监控服务器信息