Mybatis框架-resultMap元素的自動映射級別


resultMap的自動映射級別:分為三種:NONE  PARTIAL  FULL

其中默認的屬性是:PARTIAL:開啟自動匹配,會自動匹配數據庫中的字段名和實體類中的屬性名,如果一致,就能匹配上,如果不一致,就不能進行匹配

mybatis-config.xml

 

 UserMapper.xml

 

 UserMapper.java

 

編寫測試方法:

 1 @Test
 2     public void test9() {
 3         Map<String, String> map = new HashMap<String, String>();
 4         map.put("userName1", "趙");
 5         map.put("userRole1", "3");
 6     
 7         SqlSession sqlSession = null;
 8         java.util.List<User> userList2 = new ArrayList<User>();
 9         try {
10             sqlSession = MyBatisUtil.createSqlSession();
11             //使用mapper映射的方式實現
12             //userList2 = sqlSession.selectList("cn.smbms.dao.user.UserMapper.getUserListByUserName",userNameString);
13             //調用mapper接口的方式實現
14             userList2 = sqlSession.getMapper(UserMapper.class).getUserListByUserName5(map);
15             int size = userList2.size();
16             mlogger.info("獲取到的記錄數是:" + size);
17 
18         } catch (Exception e) {
19             // TODO: handle exception
20         } finally {
21             // 最后一定要注意:關閉會話
22             MyBatisUtil.closeSqlSession(sqlSession);
23 
24         }
25         for (User user2 : userList2) {
26             mlogger.info("用戶名:" + user2.getUserName() + ",密碼:" + user2.getUserPassword()+",用戶角色:"+user2.getUserRoleName()+"地址:"+user2.getAddress());
27         }
28 
29     }

運行結果:

1 [DEBUG] 2019-11-04 22:27:39,810 cn.smbms.dao.user.UserMapper.getUserListByUserName5 - ==>  Preparing: select a.*,r.roleName from smbms_user a,smbms_role r where username like CONCAT ('%',?,'%') and userRole = ? and a.userRole=r.id 
2 [DEBUG] 2019-11-04 22:27:39,990 cn.smbms.dao.user.UserMapper.getUserListByUserName5 - ==> Parameters: 趙(String), 3(String)
3 [INFO] 2019-11-04 22:27:40,099 cn.smbms.dao.test.UserMapperTest - 獲取到的記錄數是:1
4 [DEBUG] 2019-11-04 22:27:40,099 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@3caa4b]
5 [DEBUG] 2019-11-04 22:27:40,099 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@3caa4b]
6 [DEBUG] 2019-11-04 22:27:40,099 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 3975755 to pool.
7 [INFO] 2019-11-04 22:27:40,099 cn.smbms.dao.test.UserMapperTest - 用戶名:趙燕,密碼:0000000,用戶角色:普通員工地址:北京市海淀區回龍觀小區10號樓

如果不想進行自動匹配,只需設置autoMappingBehavior的屬性值為NONE,就把自動匹配的功能關掉了

mybatis-config.xml

 

UserMapper.xml

 

 UserMapper.java

 

 編寫測試方法:

 1 @Test
 2     public void test9() {
 3         Map<String, String> map = new HashMap<String, String>();
 4         map.put("userName1", "趙");
 5         map.put("userRole1", "3");
 6     
 7         SqlSession sqlSession = null;
 8         java.util.List<User> userList2 = new ArrayList<User>();
 9         try {
10             sqlSession = MyBatisUtil.createSqlSession();
11             //使用mapper映射的方式實現
12             //userList2 = sqlSession.selectList("cn.smbms.dao.user.UserMapper.getUserListByUserName",userNameString);
13             //調用mapper接口的方式實現
14             userList2 = sqlSession.getMapper(UserMapper.class).getUserListByUserName5(map);
15             int size = userList2.size();
16             mlogger.info("獲取到的記錄數是:" + size);
17 
18         } catch (Exception e) {
19             // TODO: handle exception
20         } finally {
21             // 最后一定要注意:關閉會話
22             MyBatisUtil.closeSqlSession(sqlSession);
23 
24         }
25         for (User user2 : userList2) {
26             mlogger.info("用戶名:" + user2.getUserName() + ",密碼:" + user2.getUserPassword()+",用戶角色:"+user2.getUserRoleName()+"地址:"+user2.getAddress());
27         }
28 
29     }

運行結果:

1 [DEBUG] 2019-11-04 22:36:38,393 cn.smbms.dao.user.UserMapper.getUserListByUserName5 - ==>  Preparing: select a.*,r.roleName from smbms_user a,smbms_role r where username like CONCAT ('%',?,'%') and userRole = ? and a.userRole=r.id 
2 [DEBUG] 2019-11-04 22:36:38,623 cn.smbms.dao.user.UserMapper.getUserListByUserName5 - ==> Parameters: 趙(String), 3(String)
3 [INFO] 2019-11-04 22:36:38,742 cn.smbms.dao.test.UserMapperTest - 獲取到的記錄數是:1
4 [DEBUG] 2019-11-04 22:36:38,742 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@ed0220c]
5 [DEBUG] 2019-11-04 22:36:38,742 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@ed0220c]
6 [DEBUG] 2019-11-04 22:36:38,742 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 248521228 to pool.
7 [INFO] 2019-11-04 22:36:38,752 cn.smbms.dao.test.UserMapperTest - 用戶名:趙燕,密碼:null,用戶角色:普通員工地址:null


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM