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());
    }
}
 
原文地址:https://www.cnblogs.com/jston/p/2887358.html