MyBatis 入門の基本 (4)----入力マッピングと出力マッピング 1: 入力マッピング
parameterType を通じて入力パラメータの型を指定します。型は、単純型、ハッシュマップ、または pojo パッケージ型です。
1.1. pojo のパッケージ化オブジェクトを渡す
1.1.1. 要件の説明
ユーザー情報の包括的なクエリを完了するには、渡す必要があるクエリ条件が複雑になる場合があります (ユーザー情報、その他の情報、商品、注文などお待ちください)。
1.1.2. パッケージングタイプpojoを定義する
上記の要件に基づいて、カスタムパッケージングタイプpojoを使用し、複雑なクエリ条件をパッケージングタイプpojoでラップすることをお勧めします。
Pojo class UserQueryVo クエリ条件をラップするクラス コード:
1 package com.mybatis.entity; 2 3 /**4 * 5 * @ClassName: UserQueryVo 6 * @Description: TODO (パッケージ化タイプ) 7 * @author warcaft 8 * @date 2015-6-30 12:00:41 AM 9 *10*/11 public class UserQueryVo {12 //ここで他のクエリ条件をラップします 13 // Userクエリ条件 14 PRivate UserCustom userCustom;15 16 public UserCustom getUserCustom() {17 return userCustom;18 }19 20 public void setUserCustom(UserCustom userCustom) {21 this.userCustom = userCustom;22 }23 //他のクエリ条件もパッケージ化できます。 .....24 25 }
コードを表示
UserCustomクラスのコード
1 package com.mybatis.entity; 2 /**3 * 4 * @ClassName: UserCustom 5 * @Description: TODO (ユーザーの拡張クラス) 6 * @author warcaft 7 * @date 2015-6-30 12:02:37 AM 8 * 9*/10 public class UserCustom extends User{11 //ユーザーの情報 12}
コードの表示
UserMapper.xmlのコード
UserMapper.xmlでユーザー情報の包括的なクエリを定義します(クエリ条件が複雑であると仮定し、複雑な関連クエリは高度なクエリを通じて実行されます)
1 5
コードの表示
UserMapper.java class code
1 /**2 * 3 * @ClassName: UserMapper 4 * @Description: TODO (ユーザー管理マッパー インターフェイス) 5 * @author warcaft 6 * @date 2015-6-30 12:14:56 AM 7 * 8*/ 9 パブリックインターフェイス UserMapper {10 // ユーザーの包括的なクエリ情報 11 public List
コードを表示
Junit 単体テスト コード
1 パッケージ com.mybatis.dao.test; 2 3 java.io.InputStream をインポートします。 4 java.util.Date をインポートします。 5 java.util.Listをインポートします。 6 7 org.apache.ibatis.io.Resources をインポートします。 8 インポート org.apache.ibatis.session.SqlSession; 9 インポート org.apache.ibatis.session.SqlSessionFactory;10 インポート org.apache.ibatis.session.SqlSessionFactoryBuilder;11 インポート org.junit.Before;12 インポート org.junit.Test;13 14 インポート com.mybatis.entity.User ;15 import com.mybatis.entity.UserCustom;16 import com.mybatis.entity.UserQueryVo;17 import com.mybatis.mapper.UserMapper;18 19 public class UserMapperTest {20 21 private SqlSessionFactory sqlSessionFactory;22 23 // この方法は実行findUserByIdTestの前に実行24 @Before25 public void setUp() throws Exception {26 String resource = "SqlMapConfig.xml";27 InputStream inputStream = Resources.getResourceAsStream(resource);28 // essionFcatory29 sqlSessionFactory = new SqlSessionFactoryBuilder().build (inputStream);30 }31 32 @Test33 public void testFindUserList() {34 SqlSession sqlSession = sqlSessionFactory.openSession();35 //创造查询条件36 User QueryVo userQueryVo = new UserQueryVo();37 UserCustom userCustom = new UserCustom(); 38 userCustom.setSex("2");39 userCustom.setUsername("小");40 userQueryVo.setUserCustom(userCustom);41 // 创建Usermapper对象、mybatis自動生成mapper代理对象42マッパー = sqlSession.getMapper(UserMapper .class);43 List
コードを表示2 :出力映写
1.resultType
useresultTypeを使用して出力写像を実行し、承認された列名とpojo内のプロパティ名が一致している場合のみ、その列は正常に映写できます。
ただ要求された列名と pojo 内のプロパティが一致しているため、pojo オブジェクトを作成します。表、通查询总数'
UserMapper.xmlの代コード
1 2 5 8 12 <マッパー namespace="com.mybatis.mapper.UserMapper">13 16
UserMapper.javaの代詞1 パブリック インターフェイス UserMapper {2 //用户情報综合查询总数3 public int findUserCount(UserQueryVo userQueryVo);4 }
1 パッケージ com.mybatis.dao.test; 2 3 java.io.InputStream をインポートします。 4 java.util.Date をインポートします。 5 java.util.Listをインポートします。 6 7 org.apache.ibatis.io.Resources をインポートします。 8 インポート org.apache.ibatis.session.SqlSession; 9 インポート org.apache.ibatis.session.SqlSessionFactory;10 インポート org.apache.ibatis.session.SqlSessionFactoryBuilder;11 インポート org.junit.Before;12 インポート org.junit.Test;13 14 インポート com.mybatis.entity.User ;15 import com.mybatis.entity.UserCustom;16 import com.mybatis.entity.UserQueryVo;17 import com.mybatis.mapper.UserMapper;18 19 public class UserMapperTest {20 21 private SqlSessionFactory sqlSessionFactory;22 23 // この方法は実行findUserByIdTestの前に実行24 @Before25 public void setUp() throws Exception {26 String resource = "SqlMapConfig.xml";27 InputStream inputStream = Resources.getResourceAsStream(resource);28 // essionFcatory29 sqlSessionFactory = new SqlSessionFactoryBuilder().build (inputStream);30 }31 32 @Test33 public void findUserCountTest() {34 SqlSession sqlSession = sqlSessionFactory.openSession();35 //创造查询条件36 UserQueryVo userQueryVo = new UserQueryVo();37 UserCustom userCustom = new UserCustom(); 38 userCustom.setSex("2");39 userCustom.setUsername("小");40 userQueryVo.setUserCustom(userCustom);41 // 创建Usermapper对象、mybatis自動生成mapper代理对象42マッパー = sqlSession.getMapper(UserMapper .class);43 int count=mapper.findUserCount(userQueryVo);44 System.out.println(count);45 sqlSession.commit();46 sqlSession.close();47 }48 }
コードを表示
1.2.2.出ポジョ对象リスト,メソッド返值是List
1 public Interface UserMapper {2 /** ユーザー名に基づくユーザー情報のあいまいクエリ*/3 公開リスト finduserbyname(string username); 4}
结结:生成生成生成的动态代理代理对象根据根据java.java方法方法方法方法类型类型是调用是调用调用调用返回返回返回个个对象对象) .出力タイプresultMap
mybatisではresultMapを使用して高レベルの出力結果マッピングを完了します。の出力映射型
1.3 .2.demo 例
(1). 要件: 下の SQL を使用するユーザーが表示を完了します
select id id_,username username_ from t_user where id=?
User クラス内のプロパティ名と上の列名が一致しません。 (2).決定結果マップ
1 2 5 8 12
(3). resultMap をステートメント
1 の出力型マッピングとして使用します 4
UserMapper.java code
public Interface UserMapper { /**IDに基づいてユーザー情報をクエリし、出力にresultMapを使用します*/ public User findUserByIdResultMap(int id);}
Junit テスト コード:
1 パッケージ com.mybatis.dao.test; 2 3 インポート java.util.Date; 5 インポート java.util.List;インポート org.apache.ibatis.io.Resources ; 8 インポート org.apache.ibatis.session.SqlSession; 9 インポート org.apache.ibatis.session.SqlSessionFactory;10 インポート org.apache.ibatis.session.SqlSessionFactoryBuilder .junit.Before;12 import org.junit .Test;13 14 import com.mybatis.entity.User;15 import com.mybatis.entity.UserCustom;16 import com.mybatis.entity.UserQueryVo;17 import com.mybatis. mapper.UserMapper;18 19 public class UserMapperTest { 20 21 private SqlSessionFactory sqlSessionFactory;22 23 // このメソッドは findUserByIdTest の前に実行されます 24 @Before25 public void setUp() throws Exception {26 String resource = "SqlMapConfig.xml";27 InputStream input Stream = Resources.getResourceAsStream(resource); " SqlSession sqlSession = sqlSessionFactory.openSession();35 // Usermapper オブジェクトを作成し、mybatis がマッパー プロキシ オブジェクトを自動的に生成します36 UserMapper mapper = sqlSession.getMapper(UserMapper.class);37 ユーザー user = マッパー。 findUserByIdResultMap(1);38 System.out.println(user);39 sqlSession.close();40 }4 1}
コードの表示
概要:
クエリされた列名が一貫している場合にのみ、resultType を使用します。 pojo 内の属性名を使用して列を正常にマップできますか。
クエリされた列名がpojo属性名と一致しない場合は、resultMapを定義して列名とpojo属性名の間にマッピング関係を作成します。
以上が mybatis 入門の基本 (4) - 入力マッピングと出力マッピングの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。