(七)配置及び用法のMyBatis
半ORMフレームワークと言える構成を紹介します.それはMybatisです.mybatisを紹介する時、私はHibernateとあまり関わりたくありません.ORMの性質がありますが、混乱しないようにはっきりしています.ここでは、Springなどのフレームワークとの統合はともかく.Mybatisをダウンロードして行くことができます
http://code.google.com/p/mybatis/ .この文書のラベルの中には、タイプ別名、マッピング別名などが使用されています.コンテキストの比較を参照して、積極的に試してください.
現在使用されているパッケージ:asm-3.1.jar、cglib-2.2.jar、commons-logging-1.1.1.jar、log 4 j-1.2.3.1.jar、mybatis-3.0.5.jar、mybatis-3.0.5-javadoc.jar、mybatis-3.0.5-sources.jar、slf 4 j-api-1.5.8.jar、slf 4 j-log 4 j 12-1.5.8.jar、mysql-connector-java-5.0.5-bin.jar
(1)使用される永続化Bean:
(1)mysql.propertiesの構成(具体的なデータソース情報を設定):
(2)mysql-config.xmlの構成:(mybatisプロファイル、名前、パスは任意)
(3)UserMapper.xmlの構成:(マッパー)
(4)マッパーインタフェース:
(5)テスト:
mybatisの基本的な構成は以下の通りです.より深いレベルで使用するには、ドキュメントを参照してください.ドキュメントの文章の先頭にあるアドレスはダウンロードされています.何か間違いがあったらメッセージを残して、一緒に勉強してください.ありがとうございます.
http://code.google.com/p/mybatis/ .この文書のラベルの中には、タイプ別名、マッピング別名などが使用されています.コンテキストの比較を参照して、積極的に試してください.
現在使用されているパッケージ:asm-3.1.jar、cglib-2.2.jar、commons-logging-1.1.1.jar、log 4 j-1.2.3.1.jar、mybatis-3.0.5.jar、mybatis-3.0.5-javadoc.jar、mybatis-3.0.5-sources.jar、slf 4 j-api-1.5.8.jar、slf 4 j-log 4 j 12-1.5.8.jar、mysql-connector-java-5.0.5-bin.jar
(1)使用される永続化Bean:
public class Student {
private Integer uid;
private String studentName;
private List<Score> score;// 。
//getter and setter
}
public class Score {
private Integer sid;
private String scoreName;
private Student student;//
//getter and setter
}
(1)mysql.propertiesの構成(具体的なデータソース情報を設定):
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybaties
username=root
password=123
(2)mysql-config.xmlの構成:(mybatisプロファイル、名前、パスは任意)
<?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,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,plugins,environments,mappers, , !
<properties resource="mysql.properties" />// , ,
<!-- , , -->
<typeAliases>
<typeAlias type="com.lrl.entity.Student" alias="StudentEntity" />
<typeAlias type="com.lrl.entity.Score" alias="ScoreEntity" />
</typeAliases>
<!-- -->
<environments default="development">// id( develpment)
<environment id="development">// id
<transactionManager type="JDBC" >
</transactionManager>
<!-- -->
<dataSource type="POOLED">//UNPOOLED ( ),POOLED ( ),JNDI( Spring )
<property name="driver" value="${driver}" />//$
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- Mapper -->
<mappers>
<mapper resource="com/lrl/entity/ScoreMapper.xml" />
</mappers>
</configuration>
(3)UserMapper.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 ( ) -->
<mapper namespace="com.lrl.dao.ScoreDao">
<!-- Score -->
<resultMap type="ScoreEntity" id="scoreResult">
<id property="sid" column="sid" />
<result property="scoreName" column="scoreName" />
<!-- -->
<association property="student" column="uid" javaType="StudentEntity"
resultMap="studentResult" >// resultMap="studentResult"
<id property="uid" column="uid"/>
<result property="studentName" column="studentName"/>
</association>
//association :
<association property="student" column="uid" javaType="StudentEntity">// , resultMap="studentResult"
<id property="uid" column="uid"/>
<result property="studentName" column="studentName"/>
</association>
//association :
<association property="student" column="uid" javaType="StudentEntity"
select="findStudentById" >// N+1 ,
</association>
</resultMap>
<!-- Student -->
<resultMap type="StudentEntity" id="studentResult">
<id property="uid" column="uid" />
<result property="studentName" column="studentName" />
<collection property="score" ofType="ScoreEntity" >
<id property="sid" column="sid" />
<result property="scoreName" column="scoreName" />
</collection>
</resultMap>
//PS:resultMap <constructor></constructor><discriminator></discriminator> , , !
<!-- ,id -->//resultType ,resultMap
<select id="findById" parameterType="Integer" resultType="ScoreEntity">
select
* from Score s where s.sid=#{sid}//#{} , , 。
</select>
<select id="findScoreToStudent" parameterType="Integer"
resultMap="scoreResult">
select * from Score s left outer join Student u on
s.uid=u.uid where s.sid=#{sid}// resultMap, , resultType , .
</select>
<select id="findStudentToScore" parameterType="Integer"
resultMap="studentResult">
select * from Student u left outer join Score s on
u.uid=s.uid where u.uid=#{uid}
</select>
<update id="updateByEntity" parameterType="ScoreEntity">
update Score s set s.scoreName=#{scoreName} where s.sid=#{sid}<!--
#{} ScoreEntity , !
-->
</update>
// <insert></insert>,<delete></delete> 。 。
</mapper>
(4)マッパーインタフェース:
public interface ScoreDao {
public Score findById(Integer sid);
public Score findScoreToStudent(Integer sid);
public void updateByEntity(Score score);
public Student findStudentToScore(Integer uid);
}
// UserMapper.xml( ) <select></select><update></update> 。 @Select、@Insert :
@Select("select * from Score s where s.sid=#{sid}")
public Score findById(Integer sid);
(5)テスト:
String resource = "mysql-config.xml";
Reader reader = Resources.getResourceAsReader(resource);//
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);// SqlSessionFactory,
SqlSession session = sessionFactory.openSession(true);// true , , session.commit() , 。
ScoreDao scoreDao = session.getMapper(ScoreDao.class);//ScoreDao , namespace 。
Score score = scoreDao.findById(1);
System.out.println(score.getScoreName());//
mybatisの基本的な構成は以下の通りです.より深いレベルで使用するには、ドキュメントを参照してください.ドキュメントの文章の先頭にあるアドレスはダウンロードされています.何か間違いがあったらメッセージを残して、一緒に勉強してください.ありがとうございます.