SSMybatis統合--Mybatisを詳しく解読し、oracleデータベースを添削して調べる(一)

14733 ワード

Mybatisは、現在主流の恒久化層の枠組みであり、Hibernateとは違って、元の音声SQL文を使ってデータベースを操作することを奨励しています.したがって、非常に柔軟な機能を提供しています.特に、データベースの同時アクセス数が多すぎて、最適化が必要な場合、sql文を使って最適化するのは、Hybernateを使った検索文よりずっと簡単です.Mybatisにも欠点があります.元のSQL文を使っているので、彼のデータベースの互換性は高くないです.しかし、これはそれの役割を妨げないです.次は簡単にMybatisを使いましょう.私が使っているのはEclipseです.データベースはOracleのためにjavaプロジェクトを作成します.hibernature.cfg.xmlのように、mybatis Config.xmlを作成して、このプロファイルでデータベースへの接続を行います.
    <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();
        }