首先要解决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);
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')
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, …)
DATEDIFF(d1,d2)
IF(expr,v1,v2)
find_in_set(str,strlist)
find_in_set
判断是否包含某个字符串str
要查询的字符串strlist
字段名 参数以”,”分隔 如 (1,2,6,8,10,22)AND (TRIM(str) REGEXP ‘[^0-9.]') = 0
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中出现的位置// 如果字符串 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)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。