(2).Mybatisプロファイルの最適化
12407 ワード
最適化1:
前回Mybatisを使用してデータベースを操作するCRUD操作の場合、使用するデータベースはMySQLであり、データベースの構成情報はmybatis-cfgに直接書かれている.xmlファイルでは、Oracle、SqlServerなどの他のデータベースに接続する場合、mybatis-cfgを大幅に変更する必要があります.xmlファイルのdataSourceラベルの情報は、メンテナンスに不利でエラーが発生しやすい.解決策:データベースの構成情報をプロパティファイルに書き込むmybatis-cfg.xmlファイルにプロパティファイルを導入します.これにより、プロファイルにインポートしたプロパティファイル名を変更するだけで済みます.srcの下にfileを新規作成しmysqlDBと名付けます.properties、プロパティファイルの内容:
mybatis-cfg.xmlファイルに属性ファイルを導入し、属性値の置換を行います.置換後の内容は次のとおりです.
最適化2:
エンティティクラスのマッピングファイルでは、sql文のparameterTypeまたはresultTypeは、エンティティクラスの全クラス名comと書く.qcc.entity.User、冗長、面倒;解決策:mybatis-cfg.xmlファイルでは、エンティティクラスに対応する別名を設定、comの代わりにUserを使用する.qcc.entity.User、はっきりしていて、簡潔です.2つの方法:1.
userMapper.xmlファイルのparameterTypeとresultTypeはcomの代わりに別名Userを使用する.qcc.entity.Userはコード作成を簡略化する.
このようにしてxmlファイルではcomが使用されます.qcc.entity.Userの場所は別名Userで代用できます.
前回Mybatisを使用してデータベースを操作するCRUD操作の場合、使用するデータベースはMySQLであり、データベースの構成情報はmybatis-cfgに直接書かれている.xmlファイルでは、Oracle、SqlServerなどの他のデータベースに接続する場合、mybatis-cfgを大幅に変更する必要があります.xmlファイルのdataSourceラベルの情報は、メンテナンスに不利でエラーが発生しやすい.解決策:データベースの構成情報をプロパティファイルに書き込むmybatis-cfg.xmlファイルにプロパティファイルを導入します.これにより、プロファイルにインポートしたプロパティファイル名を変更するだけで済みます.srcの下にfileを新規作成しmysqlDBと名付けます.properties、プロパティファイルの内容:
username=root
password=
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql:///mybatis1?characterEncoding=utf-8
mybatis-cfg.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="mysqlDB.properties"/>
<!-- environment , -->
<environments default="dev">
<environment id="dev">
<transactionManager type="jdbc" />
<dataSource type="pooled">
<!-- EL ,${} key -->
<property name="driver" value="${driverClass}"/>
<!-- characterEncoding=utf-8 -->
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/qcc/mapping/userMapper.xml"/>
</mappers>
</configuration>
最適化2:
エンティティクラスのマッピングファイルでは、sql文のparameterTypeまたはresultTypeは、エンティティクラスの全クラス名comと書く.qcc.entity.User、冗長、面倒;解決策:mybatis-cfg.xmlファイルでは、エンティティクラスに対応する別名を設定、comの代わりにUserを使用する.qcc.entity.User、はっきりしていて、簡潔です.2つの方法:1.
<typeAlias type="com.qcc.entity.User" alias="User"/>
ラベルを直接使用して、単一のエンティティクラスの別名を指定します.2.一括パッケージ内のすべてのエンティティークラスの別名<package name="com.qcc.entity"/>
を指定します.<?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="mysqlDB.properties"/>
<typeAliases>
<!-- , package -->
<typeAlias type="com.qcc.entity.User" alias="User"/>
<!-- com.qcc.entity -->
<package name="com.qcc.entity"/>
</typeAliases>
<!-- environment , -->
<environments default="dev">
<environment id="dev">
<transactionManager type="jdbc" />
<dataSource type="pooled">
<!-- EL ,${} key -->
<property name="driver" value="${driverClass}"/>
<!-- characterEncoding=utf-8 -->
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/qcc/mapping/userMapper.xml"/>
</mappers>
</configuration>
userMapper.xmlファイルのparameterTypeとresultTypeはcomの代わりに別名Userを使用する.qcc.entity.Userはコード作成を簡略化する.
<?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,namespace + sql , -->
<mapper namespace="com.qcc.mapping.userMapper">
<!-- id , mybatis sql -->
<!-- parameterType resultType User com.qcc.entity.User -->
<select id="getUser" parameterType="int" resultType="User">
select id, name, phone, email from users where id = #{id} <!-- #{} -->
</select>
<select id="getAll" resultType="User">
select id, name, phone, email from users
</select>
<insert id="addUser" parameterType="User">
insert into users(name, phone, email) values(#{name}, #{phone}, #{email})
</insert>
<update id="updateUser" parameterType="User">
update users set name=#{name}, phone=#{phone}, email=#{email} where id=#{id}
</update>
<delete id="delUser" parameterType="int">
delete from users where id = #{id}
</delete>
</mapper>
このようにしてxmlファイルではcomが使用されます.qcc.entity.Userの場所は別名Userで代用できます.