springboot 和 mybatis整合:参数查询和动态sql
springboot 和 mybatis整合:
mapper定义的是数据库的操作方法:
@Mapper
public interface UserMapper {}
单参数的处理:
@Select("select * from t_user")@Results({@Result(property = "userId", column = "USER_ID"),@Result(property = "username", column = "USERNAME"),@Result(property = "password", column = "PASSWORD"),@Result(property = "mobileNum", column = "PHONE_NUM")})List<User> list();
多参数的处理:
/*** 延伸:无论什么方式,如果涉及多个参数,则必须加上@Param注解,否则无法使用EL表达式获取参数。*/@Select("select * from t_user where username like #{username} and password like #{password}")@Results({@Result(property = "userId", column = "USER_ID"),@Result(property = "username", column = "USERNAME"),@Result(property = "password", column = "PASSWORD"),@Result(property = "mobileNum", column = "PHONE_NUM")})User get(@Param("username") String username, @Param("password") String password);
CRUD的高级注解:
@SelectProvider
@InsertProvider
@UpdateProvider
@DeleteProvider
先在mapper下定义Provider,所谓的Provider就是自定义的sql语句,规则可以自定义
public class UserSqlProvider {/*** 方式1:在工具类的方法里,可以自己手工编写SQL。*/public String listByUsername(String username) {return "select * from t_user where username =#{username}";}
}
然后定义使用这个sql语句的方法,就在对应的mapper里面操作:
/*** 方式2:使用注解指定某个工具类的方法来动态编写SQL.*/@SelectProvider(type = UserSqlProvider.class, method = "listByUsername")@Results({@Result(property = "userId", column = "USER_ID"),@Result(property = "username", column = "USERNAME"),@Result(property = "password", column = "PASSWORD"),@Result(property = "mobileNum", column = "PHONE_NUM")})List<User> listByUsername(String username);
controller里面使用:
@GetMapping("list/{username}")public List<User> listByUsername(@PathVariable("username") String username) {return userMapper.listByUsername(username);}
another samples:
UserSqlProvider.java /*** 方式2:也可以根据官方提供的API来编写动态SQL。*/public String getBadUser(@Param("username") String username, @Param("password") String password) {return new SQL() {{SELECT("*");FROM("t_user");if (username != null && password != null) {WHERE("username like #{username} and password like #{password}");} else {WHERE("1=2");}}}.toString();}UserMapper.java@SelectProvider(type = UserSqlProvider.class, method = "getBadUser")@Results({@Result(property = "userId", column = "USER_ID"),@Result(property = "username", column = "USERNAME"),@Result(property = "password", column = "PASSWORD"),@Result(property = "mobileNum", column = "PHONE_NUM")})User getBadUser(@Param("username") String username, @Param("password") String password);UserController.java@GetMapping("get/bad/{username}/{password}")public User getBadUser(@PathVariable("username") String username, @PathVariable("password") String password) {return userMapper.getBadUser(username, password);}
springboot 和 mybatis整合:参数查询和动态sql相关推荐
- Mybatis的特性详解——动态SQL
Mybatis的特性详解--动态SQL 前言 一.动态sql的元素 1.MyBatis if标签:条件判断 2.MyBatis choose.when和otherwise标签 3.MyBatis wh ...
- geoserver动态颜色参数样式、动态sql配置实现
动态颜色参数样式.动态sql 访问方式: http://localhost:20011/geoserver/gzzjygis/wms?service=WMS&version=1.1.0& ...
- Mybatis最拿得出手的功能之一 SpringBoot整合Mybatis-Plus 实战之动态SQL
MyBatis的动态SQL是最令人喜欢的功能 在了解 动态SQL之前,你首先得知道一个表达式 OGNL,这个是基础! 面试常问问题 : Mybatis 中$与#的区别? #是将传入的值当做字符串的形式 ...
- 8、SpringBoot+Mybatis整合------参数取值方式
前言: 我们知道,在mybatis中,参数取值方式有两种: #{ } 和 ${ } 下面,我们来探讨下#{ }与${ }不同. 一.#{ } 例: select * from student wher ...
- Day14(springboot与mybatis整合、mybatis自动代码生成、swagger、thymeleaf、lombok环境配置、mybatisPlus介绍(自动代码生成))
srpingboot和mybatis整合 springbootSSM项目下载地址 链接:https://pan.baidu.com/s/11fwh1C7ZOg3jQVlXl2DJjQ 提取码:83yt ...
- mybatis if test 用法_SpringBoot整合Mybatis-Plus 实战之动态SQL,Mybatis拿得出手的功能之一...
MyBatis的动态SQL是最令人喜欢的功能 在了解 动态SQL之前,你首先得知道一个表达式 OGNL,这个是基础! 面试常问问题 : Mybatis 中$与#的区别? 是将传入的值当做字符串的形式, ...
- java元婴期(29)----java进阶(springmvc(3)---springmvc和mybatis整合参数绑定(上))
springmvc和mybatis整合 需求 使用springmvc和mybatis完成商品列表查询. 整合思路 springmvc+mybaits的系统架构: 第一步:整合dao层 mybatis和 ...
- Eclipse中实现SpringBoot与Mybatis整合(图文教程带源码)
场景 数据库中数据 实现效果 项目结构 前面参照 Eclipse中新建SpringBoot项目并输出HelloWorld https://blog.csdn.net/BADAO_LIUMANG_QIZ ...
- Mybatis的第三章动态sql总结
我们来讲一下为什么要使用Mybatis的动态sql ? *因为动态sql之所以是Mybatis 的强大特性是因为我们在使用JDBC操作数据库的时候如果查询特别的多,将条件串联成sql字符串是一件很痛苦 ...
最新文章
- 【mysql】Mac下安装mysql5.7 完整步骤,大坑已解决
- linux 批量启动服务器,批量部署Linux操作系统systemimager 使用
- 检查邮箱是否包含教育后缀.edu结尾的邮箱
- Stanford UFLDL教程 线性解码器
- CentOS 7.2 Ubuntu 18部署Rsync + Lsyncd服务实现文件实时同步/备份
- poj2823 Sliding Window
- matlab解带参数的积分方程组,方程组求解问题:方程组中有带参数的积分函数,求参数...
- 使用SpringMVC参数传递时,解决get请求时中文乱码的问题
- Hive 导数据到本地(2种方式)
- 1TB存储版iPhone 13 Pro机型预计交付时间已被推迟至10月
- mysql 重要维护工具 图解
- 免费复制百度文库的VIP文章(非常简单!)
- Eureka的元数据
- 服务器上excel文件损坏,excel文件打不开的原因和解决方法 excel文件损坏怎么修复...
- DB buffer bussy wait 分析一例
- 企业如何借助制造业ERP系统,做好生产排产管理?
- 云服务器接口文档 华为云,和云服务器对接的接口
- On the Effectiveness of Visible Watermarks 利用AI技术去除图像水印
- 01马氏链及其平稳分布
- 帝国往昔--中国的附属国
热门文章
- PHP图片上传,框架通用
- 15个JavaScript 编码小技巧
- java 重用性_Java开发重用性必备的三大核心知识点
- html5中加亮文本,html实现高亮关键字
- ubuntu 12.04 php mysql_Ubuntu 12.04下LAMP安装配置
- alm系统的使用流程_840D sl系统授权管理
- sqlplus中调用shell_(转)shell 调用sqlplus各种情况示例
- linux pxe安装mysql_搭建PXE实现自动化安装系统
- html 复制文本按钮,js实现点击按钮复制文本功能
- android应用资源可以分为两大类,Android 应用资源(一)