mybatis plus中如何编写sql语句
作者:bosh_rong 发布时间:2021-09-21 15:27:55
sql语句是写在对应的xml文件中
首先要解决maven默认不加载xml文件的问题
1.首先要写入相关配置文件
在pom 导入下面内容
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
在application中写入如下内容
mybatis-plus:
mapper-locations: classpath*:**/xml/*.xml
2.在对应的serviceimpl中调用baseMapper 接口
应为在mybatis plus 中对应的serviceImpl 接口继承自对应的mapper接口,mapper接口又继承自baseMapper 接口。
比如说
baseMapper.countRegisterDay(day)
3.在mapper文件中编写对应的接口
Integer countRegisterDay(String day);
4.在对应的xml 中编写sql语句
id 为方法的名字。resultType 为方法返回的类型
<?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.boshrong.ucentor.mapper.UcenterMemberMapper">
<select id="countRegisterDay" resultType="java.lang.Integer">
select count(*) from ucenter_member um where DATE (um.gmt_create)=#{day}
</select>
</mapper>
注意若传入的值有多个参数怎么解决?
比如说方法为
Integer countRegisterDay(String day,String time1);
sql 中获取多个值的方法可以有两种
1.方法一 ,通过索引获取
#{0} 获取day的值, #{1} 获取time1的值
2.方法二, 通过@Param获取
Integer countRegisterDay(@Param ("aa")String day,@Param ("bb")String time1);
#{aa},#{bb} 获取
#{} 与 ${} 的区别
#{} 是预编译处理,是占位符。 Mybatis 在处理 #{} 时,会将sql 中的#{} 替换成?号,调用PreparedStatement 来赋值。
${} 是字符串替换,是拼接符。就是会将 KaTeX parse error: Expected 'EOF', got '#' at position 30: …Statement 来赋值。 #̲方式能够很大程度防止sql注入…方式。
mybatis plus sql语句集合
获取数据库中某个varchar字段的最大值
max(CONVERT(stat_date,UNSIGNED))
日期格式转换
DATE_FORMAT(update_time,‘%Y-%m-%d %T')
字符串拼接
concat(#{year},‘Y')
查询年份的当前年份的后面一年
DATE_FORMAT(DATE_SUB(CURDATE(),interval -1 year),‘%Y')
查询获取当前年份
DATE_FORMAT(CURDATE(),‘%Y')
left,right函数返回args最左边、右边的length个字符串
right(args, 2)
当前日期的前三个月日期
pay_time <![CDATA[<]]> now() - INTERVAL 3 MONTH AND now()
截取某一个字段中以某个字符开始截取
以从后面开始第一个横杠为分割截取
SUBSTRING_INDEX( dep_name, ‘-',- 1 ) depName
以第一个横杠为分割截取
SUBSTRING_INDEX( dep_name, ‘-',1 ) depName
IFNULL() 函数
IFNULL(expression, alt_value)
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。
返回列表中的最大值
GREATEST(expr1, expr2, expr3, …)
返回列表中的最小值
LEAST(expr1, expr2, expr3, …)
计算日期 d1->d2 之间相隔的天数
DATEDIFF(d1,d2)
如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。
IF(expr,v1,v2)
find_in_set(str,strlist)
find_in_set
判断是否包含某个字符串str
要查询的字符串strlist
字段名 参数以”,”分隔 如 (1,2,6,8,10,22)匹配个字段是否为纯数字 0为匹配纯数字 1为匹配不是纯数字
AND (TRIM(str) REGEXP ‘[^0-9.]') = 0
将字符串转换为int数字类型
CAST(right(yearmth, 2) AS SIGNED)
动态获取数据库某个字段来作为条件
FIND_IN_SET (year_id,(SELECT
GROUP_CONCAT(DISTINCT LEFT(字段, 4))
from table))
locate()函数
locate(subStr,string)
:函数返回subStr在string中出现的位置只要找到返回的结果都大于0(即使是查询的内容就是最开始部分),没有查找到才返回0;
// 如果字符串 string 包含 subStr
locate(subStr,string) > 0
// 如果字符串 string 不包含 subStr
locate(subStr,string) = 0
locate()函数实现模糊查询
select * from user where locate('王',name)
假如现在需求是找出所有名字中含有王,但是不姓王的人找出来,我们用下面那种实现方式如下:
select * from user where locate('王',name,2)
来源:https://blog.csdn.net/weixin_39802680/article/details/114818465


猜你喜欢
- 一.介绍Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring
- 快速回顾1.Lambda表达式: (参数) -> {主体}Lambda表达式打开了函数式编程爱好者继续使用Java的大门。Lambda
- 本文实例为大家分享了java实现PDF转图片的具体代码,供大家参考,具体内容如下1.首先利用maven引入所需jar包<depende
- 效果展示前面的导入过程这里就不多说了,不会的可以自己去问度娘。导入后,选择Spider.java类直接运行就可以了,下面是游戏运行的截图:游
- 话不多说,上来就是干!?1234567891011121314151617181920212223242526272829303132333
- /*** 目的:实现AVL* 利用数组对左右儿子简化代码,但是对脑力难度反而增大不少,只适合acm模板* 其实
- 在客户机和服务器之间建立单一的双向连接,这就意味着客户只需要发送一个请求到服务端,那么服务端则会进行处理,处理好后则将其返回给客户端,客户端
- 基本语法C#,又名Csharp,天朝喜欢叫C井。C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序有各种相互交互的对象组成。相同
- 1.JWT定义JWT(Json Web Token)是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的
- 如果项目中使用到了MyBatis框架,那么使用通用Mapper和PageHelper分页插件将极大的简化我们的操作。通用Mapper可以简化
- 一、Java内存区域方法区(公有):用户存储已被虚拟机加载的类信息,常量,静态常量,即时编译器编译后的代码等数据。异常状态 OutOfMem
- Android 中 ActivityLifecycleCallbacks的实例详解  
- 在android 6.0开始,部分的权限需要我们动态申请,也就是说当我们的打开app的时候系统不会主动像您申请app所需要的部分权限,需要客
- 任务描述:在一个无向图中,获取起始节点到所有其他节点的最短路径描述Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节
- 1. 线程的5种状态从操作系统层面上,任何线程一般都具有五种状态,即创建、就绪、运行、阻塞、终止。(1) 新建状态(NEW)在程序中用构造方
- MyCat一个彻底开源的,面向企业应用开发的大数据库集群。基于阿里开源的Cobar产品而研发。能满足数据库数据大量存储;提高了查询性能。文章
- 什么是耦合性耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、
- 目录Java 基础语法中的逻辑控制一、逻辑控制语句1. 顺序结构2. 分支结构3. 循环结构二、输入输出方式1. 输出到控制台2. 从键盘输
- 1. 将对象转换为JSON字符串,返回值为一个JSON字符串public static String toJson(Object value
- 本节我们基于一个发表文章的案例来说明SpringBoot如何elasticsearch集成。elasticsearch本身可以是一个独立的服