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)
4 在mapper文件中编写对应的接口
Integer countRegisterDay(String day);
3 在对应的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注入…方式。