- 模糊查询
1. 修改Category.xml,提供listCategoryByName查询语句
concat('%',#{0},'%') 这是mysql的写法select * from category_ where name like concat('%',#{0},'%')
如果是oracle,写法是
select * from category_ where name like '%'||#{0}||'%'
注:这个0是占位符,我测试了一下,是填什么都可以。
2. 运行测试
List<Category> cs = session.selectList("listCategoryByName","cat");
<?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.how2java.pojo"> <select id="listCategoryByName" parameterType="string" resultType="Category"> select * from category_ where name like concat('%',#{0},'%') </select> </mapper>
package com.how2java; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.how2java.pojo.Category; public class TestMybatis { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); List<Category> cs = session.selectList("listCategoryByName","cat"); for (Category c : cs) { System.out.println(c.getName()); } session.commit(); session.close(); } }
- 多条件查询
结合前面的模糊查询,多一个id>多少的条件
1. Category.xml 准备sql语句
<select id="listCategoryByIdAndName" parameterType="map" resultType="Category"> select * from category_ where id> #{id} and name like concat('%',#{name},'%') </select>
2. 测试代码
因为是多个参数,而selectList方法又只接受一个参数对象,所以需要把多个参数放在Map里,然后把这个Map对象作为参数传递进去
Map<String,Object> params = new HashMap<>(); params.put("id", 3); params.put("name", "cat"); List<Category> cs = session.selectList("listCategoryByIdAndName",params);
<?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.how2java.pojo"> <select id="listCategoryByName" resultType="Category"> select * from category_ where name like concat('%',#{0},'%') </select> <select id="listCategoryByIdAndName" parameterType="map" resultType="Category"> select * from category_ where id> #{id} and name like concat('%',#{name},'%') </select> </mapper>
package com.how2java; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.how2java.pojo.Category; public class TestMybatis { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); Map<String,Object> params = new HashMap<>(); params.put("id", 3); params.put("name", "cat"); List<Category> cs = session.selectList("listCategoryByIdAndName",params); for (Category c : cs) { System.out.println(c.getName()); } session.commit(); session.close(); } }
Mybatis基础-多条件查询和模糊查询实例
最新推荐文章于 2024-03-01 18:13:43 发布