一、Map的使用 前面我們在Mapper介面的方法中,傳入的參數都是一個基本類型或者是一個實體類,那麼如果我們需要的參數不止一個但又用不到實體類所有的屬性有沒有什麼更好的辦法呢,這裡我們就可以用到Map了。 我們還是以具體的操作來進行理解。 1.利用Map實現查詢 (1)修改UserMapper介面 ...
一、Map的使用
前面我們在Mapper介面的方法中,傳入的參數都是一個基本類型或者是一個實體類,那麼如果我們需要的參數不止一個但又用不到實體類所有的屬性有沒有什麼更好的辦法呢,這裡我們就可以用到Map了。
我們還是以具體的操作來進行理解。
1.利用Map實現查詢
(1)修改UserMapper介面
1 package com.jms.dao; 2 3 import java.util.List; 4 import java.util.Map; 5 6 import com.jms.pojo.User; 7 8 public interface UserMapper { 9 //利用Map獲取User信息 10 User getUserbymap(Map<String, Object> map); 11 }
(2)修改UserMapper.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"> <!-- 命名空間namespace對應Mapper介面 --> <mapper namespace="com.jms.dao.UserMapper"> <!-- id對應介面中的方法 --> <select id="getUserbymap" parameterType="Map" resultType="com.jms.pojo.User"> select * from user where id=#{mapid} and username=#{mapname} </select> </mapper>
(3)junit測試
1 @Test 2 public void Select2() { 3 //利用工具類獲取SqlSession 4 SqlSession sqlSession = MyBatisUtil.getSqlSession(); 5 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); 6 Map<String, Object> map = new HashMap<String, Object>(); 7 map.put("mapid", 10000); 8 map.put("mapname", "jms1"); 9 User user = userMapper.getUserbymap(map); 10 System.out.println(user); 11 sqlSession.close(); 12 }
這裡查詢的是id為10000,username為jms1的用戶信息。
測試結果:
2.總結
至今為止,我們已經有了三種進行參數傳遞的方式:
1.傳遞一個基本類型。
2.傳遞一個實體類。
3.傳遞一個Map。
二、模糊查詢
模糊查詢有兩種方法:
1.java代碼中傳遞通配符“%%”
(1)修改UserMapper介面
1 package com.jms.dao; 2 3 import java.util.List; 4 import java.util.Map; 5 6 import com.jms.pojo.User; 7 8 public interface UserMapper { 9 //模糊查詢獲取User信息 10 List<User> getUsersLike(String value); 11 }
(2)修改UserMapper.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"> <!-- 命名空間namespace對應Mapper介面 --> <mapper namespace="com.jms.dao.UserMapper"> <!-- id對應介面中的方法 --> <select id="getUsersLike" parameterType="String" resultType="com.jms.pojo.User"> select * from user where username like #{value} </select> </mapper>
(3)junit測試
1 @Test 2 public void SelectLike() { 3 //利用工具類獲取SqlSession 4 SqlSession sqlSession = MyBatisUtil.getSqlSession(); 5 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); 6 List<User> users = userMapper.getUsersLike("%jms%"); 7 for(User user: users) { 8 System.out.println(user); 9 } 10 sqlSession.close(); 11 }
測試結果:
2.在SQL語句中拼接通配符“%%”
(1)修改UserMapper介面
與上同。
(2)修改UserMapper.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"> <!-- 命名空間namespace對應Mapper介面 --> <mapper namespace="com.jms.dao.UserMapper"> <!-- id對應介面中的方法 --> <select id="getUsers" resultType="com.jms.pojo.User"> <select id="getUsersLike" parameterType="String" resultType="com.jms.pojo.User"> select * from user where username like "%"#{value}"%" </select> </mapper>
(3)junit測試
1 @Test 2 public void SelectLike() { 3 //利用工具類獲取SqlSession 4 SqlSession sqlSession = MyBatisUtil.getSqlSession(); 5 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); 6 List<User> users = userMapper.getUsersLike("jms"); 7 for(User user: users) { 8 System.out.println(user); 9 } 10 sqlSession.close(); 11 }
測試結果:
(本文僅作個人學習記錄用,如有紕漏敬請指正)