c3p0+spring3+mybatis3的整合配置文件示例


環境描述:  

  mybatis的jar包:mybatis-3.1.1.jar(mybatis自身功能包),mybatis-spring-1.1.1.jar(mybatis和spring的整合包)

  c3p0的jar包:c3p0-0.9.1.jar。

首先配置好mybatis的*Mapper.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="org.jston.sql.interfaces.EasyMapper">
    <resultMap id="Easymap" type="org.jston.entity.Easy">
        <!--id映射 -->
        <id property="eid" column="eid" />
        <!--普通屬性映射 -->
        <result property="ename" column="ename" />
        <result property="epassword" column="epassword" />
    </resultMap>

    <select id="getById" parameterType="int" resultMap="Easymap">
        select *
        from Easy where eid = #{id}
    </select>
    
</mapper>

 

上述代碼描述了一張表映射到mybatis中的基本結構,resultMap節點的type屬性是數據庫表所對應的實體類,<id>節點則是描述數據庫作為標識列映射到Java實體類對應的字段。<result>則是一般字段。<select />顧名思義,是配置一個查詢。

Java實體類如下:

package org.jston.entity;

public class Easy {

    private Integer eid;
    private String ename;
    private String epassword;
    public Integer getEid() {
        return eid;
    }
    public void setEid(Integer eid) {
        this.eid = eid;
    }
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public String getEpassword() {
        return epassword;
    }
    public void setEpassword(String epassword) {
        this.epassword = epassword;
    }
}

現在對mybatis的Mapper配置實體類應該Ok了,接下來就是Configration.xml了,這是mybatis的主配置文件,由於現在要將spring和mybatis整合,所以mybatis的主配置文件的意義只是用來管理mybatis的Mapper.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>
    <mappers>
        <mapper resource="resouce/EasyMapper.xml" />
    </mappers>

</configuration>

只需要配置一下Mapper即可,關於datasource的配置在spring中配置。

到此mybatis的簡單配置就Ok了。

下面就是配置spring的application.xml文件了    

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation=" 
       http://www.springframework.org/schema/beans  
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
       http://www.springframework.org/schema/tx  
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
       http://www.springframework.org/schema/aop  
       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">



    <!-- dataSource -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
        <property name="jdbcUrl"
            value="jdbc:sqlserver://localhost:1433; DatabaseName=ey"></property>
        <property name="user" value="mybatis"></property>
        <property name="password" value="mybatis"></property>
    </bean>

    <!-- 使用spring的會話管理 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:Configration.xml" />
    </bean>
    
    <!-- 使用spring的事務管理 -->
    <bean name="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 配置當出現Exception、RuntimeException、Exception時采用對應的事務操作 -->
    <tx:advice id="userTxAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="delete*" propagation="REQUIRED" read-only="false"
                rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException" />
            <tx:method name="insert*" propagation="REQUIRED" read-only="false"
                rollback-for="java.lang.RuntimeException" />
            <tx:method name="update*" propagation="REQUIRED" read-only="false"
                rollback-for="java.lang.Exception" />
            <tx:method name="find*" propagation="SUPPORTS" />
            <tx:method name="get*" propagation="SUPPORTS" />
            <tx:method name="select*" propagation="SUPPORTS" />
        </tx:attributes>
    </tx:advice>

</beans>

以上就是spring和mybatis的配置文件整合示例。

接下來就是調用Mybatis上面配置好德select語句了~

先創建一個Dao接口:

package org.jston.sql.interfaces;

import org.jston.entity.Easy;

public interface EasyMapper {

    public Easy getById(int id);
}
    

回頭看看上面的mybatis的*Mapper.xml文件就會發現,Mapper節點的type屬性和現在定義的Dao接口類型一致,並且<select>節點的id和這個接口的方法名也一致,意味着等下我們可以通過調用這個接口的getById方法來調用mybatis對應的Sql語句。

main方法測試代碼:

package org.jston.mybatis;

import java.io.IOException;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
import org.jston.entity.Easy;
import org.jston.sql.interfaces.EasyMapper;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Mybatis_Test {

    public static void main(String[] args) throws IOException {

        //加載spring的配置文件
        ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
        //得到mybatis的SqlSessionFactory
        SqlSessionFactory obj = (SqlSessionFactory) app.getBean(
                "sqlSessionFactory", DefaultSqlSessionFactory.class);
        //創建mybatis的SqlSession
        SqlSession ses = obj.openSession();
        //得到在mybatis的*Mapper.xml文件中配置好的Mapper節點
        EasyMapper mapper = ses.getMapper(EasyMapper.class);
        //調用mybatis的Id為getById對應的Sql語句
        Easy easy = mapper.getById(1);
        //打印輸出
        System.out.println(easy.getEname());
    }
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM