mybatis簡単resultMap使用詳細
Mybatisの紹介と使用:http://www.mybatis.org/mybatis-3/zh/index.html
mybatisは半自動ORMのフレームで、SQL文や注釈を手動で配置する必要があります。比較的に、Mybatisはプログラマに残しておくスペースの柔軟性が高く、通常は手動でいくつかのものを配置してORマッピングを完了する必要があります。データベーステーブルのフィールドとPOJOエンティティクラスが一致しない場合、これはプログラマが手動でフィールドのマッピングを完了する必要があります。
mybatis-config.xmlプロファイル
簡単な解決策:SQL文クエリーの場合、クエリーフィールドに名前を変更します。
2.レスポンスMap解決属性-フィールド不整合問題
上記のような解決策は問題を解決することができますが、冗長性自体は全ての情報を調べるための*を通して配合します。このように変更するには、各フィールドを並べて、極めて個別のフィールドにエイリアスを付ける必要があります。データテーブルには何十のフィールドがありますか?エイリアスを取るフィールドは本当に1-2つしかないですか?したがって、mybatisはこの問題を解決するために強力なメカニズムを提供します。
resultMapラベルの説明: idは、定義方法の名称と考えられ、次のselectにおいて、resultMapがIDに入る値は、この方法を用いてマッピングを完了するのに相当する。 typeは実体類名 である。 column対応データベース内のフィールド propertyはエンティティクラスの属性である。 ここでmybatis簡単resultMapについて詳しく解説した文章を紹介します。mybatis resultMapの使用内容については以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。
mybatisは半自動ORMのフレームで、SQL文や注釈を手動で配置する必要があります。比較的に、Mybatisはプログラマに残しておくスペースの柔軟性が高く、通常は手動でいくつかのものを配置してORマッピングを完了する必要があります。データベーステーブルのフィールドとPOJOエンティティクラスが一致しない場合、これはプログラマが手動でフィールドのマッピングを完了する必要があります。
mybatis-config.xmlプロファイル
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<settings> <!-- -->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<typeAliases> <!-- -->
<typeAlias type="com.pojo.User" alias="user"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/dao/UserMapper.xml"/>
</mappers>
</configuration>
mybatis Utilロードツール類
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class mybatisUtil {
private static SqlSessionFactory sqlSessionFactory = null;
static {
try {
String resource = "mybatis-config.xml";
InputStream in = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlsession(){
return sqlSessionFactory.openSession();
}
}
POJO本体類Userは、簡単で実用的なLombokの注釈を容易にするために、コードをいくつか減らします。
package com.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data // get / set Tostring...
@AllArgsConstructor //
@NoArgsConstructor //
public class User {
private int id; // id
private String username; // name
private String password; // pwd
}
インターフェースメソッドと対応するxmlプロファイル
package com.dao;
import com.pojo.User;
import java.util.List;
public interface UserMapper {
List<User> getUserList();
}
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">
<mapper namespace="com.dao.UserMapper">
<select id="getUserList" resultType="user">
select *from user;
</select>
</mapper>
1.POJOエンティティ類とデータテーブルフィールドが一致しない
@Test
public void test1(){
SqlSession session = mybatisUtil.getSqlsession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> list = mapper.getUserList();
for (User user : list) {
System.out.println(user.toString());
}
session.close();
}
POJOエンティティクラスには、2つのフィールドとデータベースのフィールドが一致しません。最後に結果を得た場合、マッチングに失敗した属性に対してnull空の値が発生します。出力ログを使ってヘルプをすると、見えやすくなります。簡単な解決策:SQL文クエリーの場合、クエリーフィールドに名前を変更します。
select id, name as username, pwd as password from user
2.レスポンスMap解決属性-フィールド不整合問題
上記のような解決策は問題を解決することができますが、冗長性自体は全ての情報を調べるための*を通して配合します。このように変更するには、各フィールドを並べて、極めて個別のフィールドにエイリアスを付ける必要があります。データテーブルには何十のフィールドがありますか?エイリアスを取るフィールドは本当に1-2つしかないですか?したがって、mybatisはこの問題を解決するために強力なメカニズムを提供します。
<?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">
<mapper namespace="com.dao.UserMapper">
<!--
1. id , resultMap , 。
2. type
-->
<resultMap id="FieldMap" type="user">
<!-- column property -->
<result column="name" property="username"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserList" resultMap="FieldMap">
select *from user
</select>
</mapper>
resultMapラベルの説明: