【SSM整合】3.Mybatis环境搭建及整合

Mybatis环境搭建(注解的方式)

1.创建一个连接数据库参数的配置文件  db.properties

jdbc.driver=com.mysql.jdbc.Driver
# 本地数据库,端口3306  可以简写如下   完整写法:jdbc:mysql://localhost:3306/mybatisdb
jdbc.url=jdbc:mysql:///mybatisdb
jdbc.username=root
jdbc.password=123456

2.创建mybatis主配置文件   SqlMapConfig.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="db.properties"></properties>
    <!--配置别名-->
    <typeAliases>
        <package name="com.study.domain"></package>
    </typeAliases>
    <!--配置环境-->
    <environments default="mysql">
        <environment id="mysql">
            <!--事务-->
            <transactionManager type="JDBC"></transactionManager>
            <!--POOLED连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    <!--带有注解的dao接口所在位置-->
    <mappers>
        <package name="com.study.dao"></package>
    </mappers>

</configuration>

3.环境搭建完毕,先测试一下

package com.study.test;

import com.study.dao.AccountDao;
import com.study.domain.Account;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybatisTest {

    @Test
    public void test1() throws IOException {
        String resource = "SqlMapConfig.xml";
        //获取字节输入流
        InputStream is = Resources.getResourceAsStream(resource);
        //根据字节输入流构建SqlSessionFactory
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //使用SqlSessionFactory生产一个SqlSession
        SqlSession session = factory.openSession();
        //获取到代理对象
        AccountDao dao = session.getMapper(AccountDao.class);
        List<Account> list = dao.findAll();
        for (Account a:list) {
            System.out.println("-------"+a);
        }
        //释放资源
        session.close();
        is.close();
    }

}

 

spring整合mybatis

整合的目的:把mybatis配置中使用的类交给spring管理,也就是数据源,SqlSessionFactory工厂

操作:直接把  SqlMapConfig.xml  中的配置都放到  applicationContext.xml  中,配置如下,然后直接把     SqlMapConfig.xml 删除就好了

    <!--配置注解扫描-->
    <context:component-scan base-package="com.study">
        <!--配置不扫描的注解-->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>
    </context:component-scan>

    <!--整合mybatis框架的配置-->
    <!--读取参数配置文件db.properties-->
    <context:property-placeholder location="classpath:db.properties"/>
    <!--配置c3p0数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.DriverManagerDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>
    <!--配置SqlSessionFactory工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--配置dao接口注解的位置-->
    <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.study.dao"></property>
    </bean>

配置声明式事务

在spring的配置 -- applicationContext.xml中加入配置

<!-- 配置事务管理器 --> 
<bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
    <property name="dataSource" ref="dataSource"></property> 
</bean>   
<!-- 配置事务的通知 --> 
<tx:advice id="txAdvice" transaction-manager="transactionManager">  
    <tx:attributes> 
        <tx:method name="*" propagation="REQUIRED" read-only="false"/>   
        <tx:method name="find*" propagation="SUPPORTS" read-only="true"/> 
    </tx:attributes> 
</tx:advice>   
<!-- 配置 aop --> 
<aop:config> 
    <!-- 配置切入点表达式 --> 
    <aop:pointcut expression="execution(* com.study.service.impl.*.*(..))"  id="pt1"/> 
     <!-- 建立通知和切入点表达式的关系 -->  
    <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/> 
</aop:config>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值