1.说明

本文介绍Spring Boot集成MyBatis-Plus框架后,
基于已经创建好的Spring Boot工程,
添加自定义的SQL实现复杂查询等操作。
自定义SQL主要有两种方式,
一种是Annotation注解方式,
另一种是XML配置文件方式。

2.Annotation注解方式

直接先定义接口方法,
然后在接口方法上面开发注解即可。
下面的示例实现了通过@Select注解,
在注解中开发自定义SQL语句,
实现了通过ID查询用户的方法:

package com.example.demo.dao;import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;public interface UserDao extends BaseMapper<User> {@Select("SELECT * FROM TBL_USER WHERE id=#{id};")public User getUserById(Long id);
}

3.XML配置文件方式

首先在Spring Boot中指定需要加载的XML文件,
然后新建对应接口类的XML文件,
开发对应接口方法的自定义SQL语句。

现有通过ID查询用户的自定义接口如下:

package com.example.demo.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;public interface UserDao extends BaseMapper<User> {public User getUserById(Long id);
}

首先修改application.yml文件:

mybatis-plus:# 如果是放在src/main/java目录下 classpath:/com/*/*/mapper/*Mapper.xml# 如果是放在resource目录 classpath:/mapper/**.xmlmapper-locations: classpath:/mapper/**.xml

然后在src\main\resources目录下,
创建目录mapper,
在mapper下创建文件UserDao.xml,
在XML文件中开发自定义SQL语句:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.dao.UserDao"><select id="getUserById" parameterType="Long" resultType="com.example.demo.entity.User">SELECT * FROM TBL_USER WHERE id = #{id}</select>
</mapper>

4.两种方式共存

Annotation注解和XML配置文件这两种方式,
可以同时使用,代码可以正常执行,
不会冲突,也不会报错。
但是如果自定义了一个接口方法,
没有对应到任何实现的SQL语句,
就会报没有找到SQL绑定的错误异常:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.demo.dao.UserDao.getUserByIdAnnotationat org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235)at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.<init>(MybatisMapperMethod.java:50)at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.lambda$cachedMapperMethod$0(MybatisMapperProxy.java:101)at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(Unknown Source)at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.cachedMapperMethod(MybatisMapperProxy.java:100)at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:95)at com.sun.proxy.$Proxy79.getUserByIdAnnotation(Unknown Source)at com.example.demo.SampleTest.testSelectByAnnotations(SampleTest.java:31)

5.参考文章

MyBatis-Plus 自定义sql语句


http://www.taodudu.cc/news/show-1251006.html

相关文章:

  • SpringBoot集成MyBatis-Plus代码生成器
  • SpringCloud创建项目父工程
  • SpringCloud创建Eureka模块
  • SpringBoot集成MyBatis-Plus代码生成器(Dao)
  • SpringCloud创建Gateway模块
  • Eclipse控制台Console使用说明
  • POI导入导出Excel(HSSF格式,User Model方式)
  • 正则表达式常用汇总
  • 接口文档编写技巧
  • MySQL客户端mysql常用命令
  • HAproxy开启日志记录
  • SpringCloud创建Config模块
  • SpringCloud创建Eureka Client服务注册
  • SpringCloud创建Config Client配置读取
  • SpringCloud创建Config Client通过Eureka访问Config
  • SpringCloud集成Security安全(Config配置中心)
  • SpringCloud集成Security安全(Eureka注册中心)
  • SpringCloud创建Config多客户端公共配置
  • SpringCloud创建Config读取本地配置
  • SpringCloud使用汇总Config
  • SpringCloud创建Eureka模块集群
  • Eclipse启动SpringCloud微服务集群的方法
  • SpringCloud发现服务代码(EurekaClient,DiscoveryClient)
  • SpringBoot集成Actuator监控管理
  • SpringBoot集成Actuator端点配置
  • SpringBoot集成Actuator健康指示器health
  • gRPC创建Java RPC服务
  • ProtoBuf3语法指南(Protocol Buffers)_上
  • ProtoBuf3语法指南(Protocol Buffers)_下
  • gPRC基本介绍

SpringBoot集成MyBatis-Plus自定义SQL相关推荐

  1. Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获

    mybatis有两种方式,一种是基于XML,一种是基于注解 springboot集成mybatis 首先先创建表,这里都简化了 DROP TABLE IF EXISTS `user`; CREATE ...

  2. Springboot 集成 mybatis 开启二级缓存(redis)

    首先来了解下mybatis 缓存,mybatis缓存分为一级缓存和二级缓存.一级缓存是默认开启的,无需其他配置操作,二级缓存则需要手动设置开启. 一级缓存原理: Mybatis的一级缓存是指同一个Sq ...

  3. SpringBoot——SpringBoot集成MyBatis

    目录 1 SpringBoot集成MyBatis 1.1 准备工作 1.2 pom.xml文件 1.3 核心配置文件(application.properties) 1.4 GeneratorMapp ...

  4. SpringBoot集成Mybatis项目实操

    本文为<从零打造项目>系列第三篇文章,首发于个人网站. <从零打造项目>系列文章 比MyBatis Generator更强大的代码生成器 SpringBoot项目基础设施搭建 ...

  5. SpringBoot集成Mybatis Plus

    Mybatis Plus是Mybatis的升级版本,提供一些默认的功能实现,只要按照其约定编写代码,就可以充分利用其特性. SpringBoot集成Mybatis Plus步骤: 每个实体类定义一套M ...

  6. BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析...

    重构代码,方法抛出异常:BindingException: Invalid bound statement (not found) 提示信息很明显:mybatis没有提供某方法 先不解释问题原因和排查 ...

  7. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

  8. SpringBoot教程(十一) | SpringBoot集成Mybatis

    上一篇文章我们介绍了SpringBoot集成JdbcTemplate.简单体验了一下JdbcTemplate框架的用法,今天的内容比较重要,我们来介绍一下SpringBoot集成Mybatis的步骤. ...

  9. 第 5 课 SpringBoot集成Mybatis(2)-配置文件版

    第五课 SpringBoot集成Mybatis(2)-配置文件版 文章目录 第五课 SpringBoot集成Mybatis(2)-配置文件版 1. 引入依赖:pom.xml 2. 配置applicat ...

  10. springboot项目mybatis日志自定义设置无法生效

    springboot项目mybatis日志自定义设置无法生效,就是无法设置日志级别,无法对java.sql.PreparedStatement.java.sql.Connection等进行设置. 翻了 ...

最新文章

  1. postgresql 分组查询第一条数据
  2. 【转】select和epoll模型的差异
  3. matlab电话拨号音的合成与识别代码,实验报告 电话拨号音的合成与识别
  4. 粤桂协作消费对接活动 农业大健康·李喜贵:功能性农业合作研究
  5. 三星a7支持html吗,三星A7怎么样 三星A7特点介绍
  6. gpio的8种工作模式_Stm32之GPIO工作模式简介
  7. windows下RocketMQ下载、安装、部署、控制台
  8. Rust布道者张汉东倾授,入门Rust初学者都要攻破哪些难点?
  9. 在硅晶片上实现量子计算,英特尔可能改变了这项技术的未来
  10. 真正的研发之路(1)
  11. 在Ubuntu20.04上安装Nsight Systems
  12. MATLAB机械动力分析,基于MATLAB的柔性机械臂动力学分析.pdf
  13. email 邮件发送源代码(c++实现)
  14. 【刷题】【2.两数之和绝对值最小】
  15. 沃达丰看淡Sigfox/LoRa先行优势:NB-IoT才是运营商的未来
  16. springboot学习笔记11:分布式、微服务、springcloud概念区分
  17. c语言 udp 解包_Socket拆包和解包
  18. java.lang.RuntimeException:Unable to start activity ComponentInfo{com.meizu.beautify/com.my.viewc.Ma
  19. 网络层IP协议—ipv4
  20. Jupyterlab安装和配置

热门文章

  1. GIL、进/线程池、同/异步、阻/非阻塞
  2. geoserver矢量瓦片发服务前端展示偏移问题解决
  3. fixed 相对于父容器定位
  4. 《团队-爬取豆瓣电影TOP250-设计文档》
  5. Python数据挖掘和机器学习
  6. Qt之C语言有符号数与无符号数运算
  7. 《Thinking in java》 读了个开头
  8. jQuery源码研究分析学习笔记-jQuery.deferred()(12)
  9. 有关cookie实现统计pv,uv的一些用法
  10. 开始深入的学习javascript