目录
一、MyBatis动态SQL
1.1 mybatis的foreach标签
我们一起要实现mybatis的动态SQL,就要了解他的两个标签:if、forEach
我们利用in关键词查询的案例来一起看看关于forEach标签的使用;
首先就是在昨天Leaf发布的文章:MyBatis环境搭建&&测试增删改查__Leaf1217的博客-CSDN博客
里面介绍的插件自动生成的一个配置文件里配置我们要添加的方法配置信息:BookMapper.xml
这里的配置很重要,着重看看forEach标签以及它的属性。
<select id="selectByIn" resultMap="BaseResultMap" parameterType="java.util.List" >
select
<include refid="Base_Column_List" />
from t_mvc_book
where bid in
<foreach collection="bookIds" open="(" close=")" separator="," item="bid">
#{bid}
</foreach>
</select>
然后在自动生成的方法接口BookMapper.java里面也添加上方法:selectByIn
//通过in关键字进行查询,讲解foreach标签的使用
//如果参数 是 非实体类(book、order、...),那么记得加上注解 @param
//bookIds是对应collection属性的
List<Book> selectByIn(@Param("bookIds") List bidIds);
然后再在我们自己写的实际使用的接口中也添加上:selectByIn
package com.leaf.biz;
import com.leaf.model.Book;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Leaf
* @site 2977819715
* @company 玉渊工作室
* @create 2022-08-11 1:09
*/
public interface BookBiz {
int deleteByPrimaryKey(Integer bid);
Book selectByPrimaryKey(Integer bid);
List<Book> selectByIn(List bidIds);
}
然后我们Alt + Enter,自动补全实现方法:
@Override
public List<Book> selectByIn(List bidIds) {
return bookMapper.selectByIn(bidIds);
}
再次Alt + Enter,建立一个测试方法进行测试:
@Test
public void selectByIn() {
List<Integer> bookIds = Arrays.asList(new Integer[]{31, 32, 33, 34});
bookBiz.selectByIn(bookIds).forEach(System.out::println);
}
最后我们运行测试:
我们看到测试结果,查询到了,这就是关于forEach标签的使用,多去看看粘贴的代码。
二、模糊查询
2.1 mybatis模糊查询的三种形式
和上一个使用forEach标签测试的方法实现步骤一样;
先把三种方式的配置信息放到BookMapper.xml里面:
<select id="selectBooksLike1" resultType="com.leaf.model.Book" parameterType="java.lang.String">
select * from t_mvc_book where bname like #{bname}
</select>
<select id="selectBooksLike2" resultType="com.leaf.model.Book" parameterType="java.lang.String">
select * from t_mvc_book where bname like '${bname}'
</select>
<select id="selectBooksLike3" resultType="com.leaf.model.Book" parameterType="java.lang.String">
select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%')
</select>
然后还是一样的在自动生成的方法接口BookMapper.java里面也添加上三个方法:
List<Book> selectBooksLike1(@Param("bname") String bname);
List<Book> selectBooksLike2(@Param("bname") String bname);
List<Book> selectBooksLike3(@Param("bname") String bname);
然后再在我们自己写的实际使用的接口Bookbiz中也添加上:
List<Book> selectBooksLike1(String bname);
List<Book> selectBooksLike2(String bname);
List<Book> selectBooksLike3(String bname);
然后我们Alt + Enter,自动补全实现方法:
@Override
public List<Book> selectBooksLike1(String bname) {
return bookMapper.selectBooksLike1(bname);
}
@Override
public List<Book> selectBooksLike2(String bname) {
return bookMapper.selectBooksLike2(bname);
}
@Override
public List<Book> sel