本篇論文講的是模糊查詢然后返回的是一個list集合。
這片文章的案例是基於上一篇文章的,所以主要修改兩處地方就可以了。
1.user.xml
2.Mybatis_first.java
user.xml代碼如下:
<?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"> <!-- nanmespace:命名空間。 作用就是對sql進行分類話管理,理解Sal分離 注意:使用mapper代理方式,namespace有特殊重要的作用 --> <mapper namespace="test"> <!-- 根據id獲取用戶信息 --> <!-- 在映射文件中配置很多sql語句 --> <!-- id:標識映射文件中的sql; 將sql語句封裝到mappedStatement對象中,所以將id稱為statement的id;parmenterType:指定輸入的參數的類型,這里指定的int型 #{}表示一個占位符號; #{id}:其中的id表示接收輸入的參數,參數名稱就是id,如果輸入參數就是簡單類型,#{}中的參數名可以任意,可以value或其它名稱 resultType:指定的sql輸出結果的所映射的java對象類型,select指定resultType表示將單條記錄映射成的java對象; --> <!-- 根據用戶的名字模糊查詢 resultType指的是單條記錄所映射的java類型,不管查詢的是多條還是單條 --> <select id="findUserByUsername" parameterType="java.lang.String" resultType="cn.itcast.mybatis.po.User"> select * from user where username like '%${value}%' </select> </mapper>
Mybatis_first.java的代碼如下:
package cn.itcast.mybatis.first; 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 org.junit.Before; import org.junit.Test; import cn.itcast.mybatis.po.User; public class Mybatis_first { //會話工廠 private SqlSessionFactory sqlSessionFactory; //這些事必備的,所以放在Before這里了 @Before public void createsqlSessionFactory() throws IOException { //配置文件 String resource="SqlMapConfig.xml"; InputStream inputStream=Resources.getResourceAsStream(resource); //使用SqlSessionFactoryBuilder從配置文件中創建SqlSessionFactory. sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); } @Test //根據id查詢用戶的信息 public void testFindUseById() { //數據庫會話實例 SqlSession sqlSession=null; try { //創建數據庫會話實例sqlSession; sqlSession=sqlSessionFactory.openSession(); // User user=sqlSession.selectOne("test.findUserById", 10); List<User> listuser=sqlSession.selectList("test.findUserByUsername", "小明"); System.out.println("模糊查詢得到的員工數量是"+listuser.size()); //System.out.println(user); } catch (Exception e) { e.printStackTrace(); } finally{ //如果sqlSession實例是創建的那么把他關閉掉 if(sqlSession!=null) {sqlSession.close(); } } } }
運行的結果是:模糊查詢得到的員工數量是3
運行結果正確。