SSMybatis統合--Mybatisを詳しく解読し、oracleデータベースを添削して調べる(一)
14733 ワード
Mybatisは、現在主流の恒久化層の枠組みであり、Hibernateとは違って、元の音声SQL文を使ってデータベースを操作することを奨励しています.したがって、非常に柔軟な機能を提供しています.特に、データベースの同時アクセス数が多すぎて、最適化が必要な場合、sql文を使って最適化するのは、Hybernateを使った検索文よりずっと簡単です.Mybatisにも欠点があります.元のSQL文を使っているので、彼のデータベースの互換性は高くないです.しかし、これはそれの役割を妨げないです.次は簡単にMybatisを使いましょう.私が使っているのはEclipseです.データベースはOracleのためにjavaプロジェクトを作成します.hibernature.cfg.xmlのように、mybatis Config.xmlを作成して、このプロファイルでデータベースへの接続を行います.
次はempMapper.xmlを作成して、SQL文を書いて添削してみます.コードの備考書に彼らの役割を説明します.
<configuration>
<typeAliases>
<typeAlias type="com.jacx.entity.Emp" alias="emp" />
typeAliases>
<environments default="oracle">
<environment id="oracle">
<transactionManager type="JDBC">transactionManager>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
dataSource>
environment>
environments>
<mappers>
<mapper resource="com/jacx/config/empMapper.xml" />
mappers>
configuration>
データベースを接続した後、実体クラスを作成したいです.この時に実体類とデータベーステーブルを関係マッピングしていません.どうやって実体フィールドを通じて対応するデータベースフィールドを見つけたらいいですか?書き込みなしで関係マップしたら、データベース名と実体変数名が一致します.彼は依然として対応します. private Integer empNo;
private String eName;
private String job;
private String mgr;
private String sal;
private String comm;
private String deptNo;
そしてそのget set方法を生成すればいいです.次はempMapper.xmlを作成して、SQL文を書いて添削してみます.コードの備考書に彼らの役割を説明します.
<mapper namespace="com.jacx.config.empMapper">
<select id="queryAll" resultType="emp" resultMap="empResultMap">
SELECT * FROM emp
select>
<select id="queryById" resultType="Emp" parameterType="int" resultMap="empResultMap">
Select * FROM emp WHERE empNo = #{id}
select>
<delete id="deleteById" parameterType="int">
DELETE FROM emp WHERE empNo = #{id}
delete>
<update id="updateEmp" parameterType="Emp">
UPDATE emp
<set>
<if test="eName!=null">
ENAME = #{eName},
if>
<if test="job!=null">
JOB = #{job},
if>
<if test="mgr!=null">
MGR = #{mgr},
if>
<if test="sal!=null">
SAL = #{sal},
if>
<if test="comm!=null">
COMM = #{comm},
if>
<if test="deptNo!=null">
DEPTNO = #{deptNo}
if>
set>
WHERE empNo = #{empNo}
update>
<resultMap type="Emp" id="empResultMap">
<id column="EMPNO" property="empNo" />
<result column="ENAME" property="eName" />
<result column="JOB" property="job" />
<result column="MGR" property="mgr" />
<result column="SAL" property="sal" />
<result column="COMM" property="comm" />
<result column="DEPTNO" property="deptNo" />
resultMap>
mapper>
mybatisConfig.xml
( main )
Reader reader = null;
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = null;
SqlSessionFactory sqlSessionFactory = null;
SqlSession sqlSession = null;
try {
reader = Resources.getResourceAsReader("mybatisConfig.xml");
sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
sqlSessionFactory = sqlSessionFactoryBuilder.build(reader);
sqlSession = sqlSessionFactory.openSession();
//
// mapmer.xml id
List empList = sqlSession.selectList("com.jacx.config.empMapper.queryAll");
for (Emp e : empList) {
System.out.println(e.getDeptNo() + "\t" + e.geteName() + "\t" + e.getJob() + "\t" + e.getMgr() + "\t"
+ e.getSal() + "\t" + e.getEmpNo());
}
//
Emp emp = new Emp();
emp.seteName("jac");
emp.setEmpNo(7499);
sqlSession.update("com.jacx.config.empMapper.updateEmp",emp);
//
sqlSession.delete("com.jacx.config.empMapper.deleteById", 7521);
// , emp , oracle
Emp emp = new Emp();
emp.seteName("123");
sqlSession.insert("com.jacx.config.empMapper.addEmp")
sqlSession.commit();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}