要件:要件クエリの結果は、ユーザー名、ユーザーパスワード、ユーザーの役割の表示します
userテーブルの唯一のユーザーの役割のコード値は、該当する名前、コード表smbms_roleテーブル内の文字名がありませんので、我々はリンクテーブルを照会する必要があります。
ここで-userRoleName Userエンティティクラスにフィールドを追加し、適切なメソッドを追加する必要が取得する設定しました
User.java
UserMapper.xmlの注:ライブラリ内のプロパティ名のフィールド名によると、Userエンティティクラスが矛盾している、手動でマッピングする必要があります
1 <! - クエリ結果には、ユーザー名、パスワード、および役割のユーザ名、ニーズ、さらにはテーブルのクエリを表示するには 2 注:最終実行プログラムのroleNameがnullである 3つの 、データベース内の属性名のフィールド名とユーザーのエンティティクラス:の理由矛盾して、手動userRoleName r.roleNameとしてマッピングされなければならない- > 4 <ParameterTypeが= resultTypeと= "ユーザー">の"地図" ID = "getUserListByUserName4"を選択 5。 SELECT *。、userRoleName r.roleName AS smbms_userから、 R&LT smbms_role 。6 CONCAT( '%'、USERNAME1位{}、 '%'のようなユーザ名) 。7 とUSERROLE =#{}とa.userRole userRole1 = r.id 。8 </ SELECT>
UserMapper.java
対応するテストメソッドを書きます:
1 @Test 2 公共 ボイドTEST8(){ 3 地図<文字列、文字列>マップ= 新しい HashMapの<文字列、文字列> (); 4 map.put( "USERNAME1"、 "赵" )。 5 map.put( "userRole1"、 "3" )。 6 7 SQLSESSION SQLSESSION = NULL ; 8 java.util.Listに<ユーザー> userList2 = 新規のArrayList <ユーザー> (); 9 トライ{ 10 SQLSESSION = MyBatisUtil.createSqlSession()。 // userList2 = sqlSession.selectList( "cn.smbms.dao.user.UserMapper.getUserListByUserName"、userNameString); 13である // 呼び出しインタフェース方法マッパ 14 userList2 = sqlSession.getMapper(UserMapper クラス).getUserListByUserName4(マップ) ; 15 INTのサイズ= userList2.size(); 16 mlogger.info( "レコードの数が取得される:" + サイズ); 17 18れている } キャッチ(例外E){ 19 // TODO:例外処理 20はである } 最後に{ 21であります // 最後に、我々は注意を払う必要があります:セッションを閉じる 22 ; MyBatisUtil.closeSqlSession(SQLSESSION) 23は、 24 } 25 のための{(userList2ユーザuser2) 26である "+ user2.getUserName()+:mlogger.info( "ユーザ名" 、 + user2.getUserPassword()+":パスワード" 、 ユーザ役割:「+ user2.getUserRoleName()); 27 } 28 29 }
結果:
1【DEBUG] 2019年11月2日19:59:50022 cn.smbms.dao.user.UserMapper.getUserListByUserName4 - ==>準備:、smbms_role Rユーザ名等smbms_userからuserRoleNameなど*、r.roleNameを選択します。 CONCAT( '%'、?、 '%')とUSERROLE =?そしてa.userRole = r.id 2 [デバッグ] 2019年11月2日19:59:50157 cn.smbms.dao.user.UserMapper.getUserListByUserName4 - ==>パラメータ:赵(文字列)、3 (文字列) 3 [ INFO] 2019年11月2日19:59:50260 cn.smbms.dao.test.UserMapperTest -获取到的记录数是:1 4 [DEBUG] 2019年11月2日19:59:50260 org.apache.ibatis。 transaction.jdbc.JdbcTransaction -へのリセット自動コミット真のJDBC接続の[com.mysql.jdbc.JDBC4Connection@ed0220c] 5[DEBUG] 2019年11月2日19:59:50261 org.apache.ibatis.transaction.jdbc.JdbcTransaction - JDBC接続[com.mysql.jdbc.JDBC4Connection@ed0220c]を閉じる 。6。[DEBUG] 2019年11月2日19: 59:org.apache.ibatis.datasource.pooled.PooledDataSource 50262 -返さ248 521 228接続プールに。 7 [INFO] 2019年11月2日19 59:50262 cn.smbms.dao.test.UserMapperTest -名:趙ヤンパスワード:0000000、ユーザーの役割:一般的なスタッフ