MyBatisのフレームワーク - テーブルのクエリを表示し問題解決策と

要件:要件クエリの結果は、ユーザー名、ユーザーパスワード、ユーザーの役割の表示します

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、ユーザーの役割:一般的なスタッフ

 

おすすめ

転載: www.cnblogs.com/dongyaotou/p/11783821.html