Spring层整合mybatis的两种方式

Spring层整合mybatis的两种方式

一.使用Dao层的实现类

1.使用sqlSessionTemplate
在spring-dao.xml配置如下

    <!--dao层实现类需要的注解支持-->
    <context:component-scan base-package="com.kuang.Mapper"/>
    <context:annotation-config/>
    <!--DataSource:使用spring的数据源替换mybatis的配置 我们这里使用spring的jdbc-->
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>
    <!-- sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="datasource"></property>
        <!--绑定mybatis配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <property name="mapperLocations" value="classpath:com/kuang/Mapper/*.xml"></property>
    </bean>
    <!--sqlSessionTemplate:就是我们使用的SqlSession-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <!--构造器注入,因为没有set方法-->
        <constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
    </bean>
    
<!--测试事务-->
    <!--配置声明事务-->
    <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="datasource"></property>
    </bean>
    <!--开启事务注解-->
    <tx:annotation-driven transaction-manager="TransactionManager"></tx:annotation-driven>
</beans>

dao层的实现类如下:

package com.kuang.Mapper;
import com.kuang.pojo.User;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
@Repository
public class UserMapperImpl implements UserMapper{
    @Autowired//自动装配
    private SqlSessionTemplate sqlsession;
    @Transactional//事务注解
    public List<User> selectUser() {
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        mapper.addUser(new User(10,"www","1234"));
        mapper.deleteUser(5);
        return mapper.selectUser();
    }
    public int addUser(User user) {
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        return mapper.addUser(user);
    }

    public int deleteUser(int id) {
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        return mapper.deleteUser(id);
    }
}

2.使用SqlSessionDaoSupport

在spring-dao.xml配置如下:

 <!--DataSource:使用spring的数据源替换mybatis的配置 我们这里使用spring的jdbc-->
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>
    <!-- sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="datasource"></property>
        <!--绑定mybatis配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <property name="mapperLocations" value="classpath:com/kuang/Mapper/*.xml"></property>
    </bean>

    <bean id="userMapperImpl" class="com.kuang.Mapper.UserMapperImpl">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>

<!--测试事务-->
    <!--配置声明事务-->
    <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="datasource"></property>
    </bean>
    <!--开启事务注解-->
    <tx:annotation-driven transaction-manager="TransactionManager"></tx:annotation-driven>
</beans>

dao层的实现类如下:

package com.kuang.Mapper;
import com.kuang.pojo.User;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
public class UserMapperImpl extends SqlSessionDaoSupport implements UserMapper{
    @Transactional//事务注解
    public List<User> selectUser() {
        UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
        mapper.addUser(new User(11,"www","1234"));
        mapper.deleteUser(6);
        return mapper.selectUser();
    }
    public int addUser(User user) {
        UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
        return mapper.addUser(user);
    }

    public int deleteUser(int id) {
        UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
        return mapper.deleteUser(id);
    }
}

二.批量实现Mapper对象

在spring-dao.xml配置如下(不用写dao层实现类):

  <!--1.关联数据库配置文件-->
    <context:property-placeholder location="classpath:database.properties"/>
    <!--2.连接池
           dbcp:半自动操作,c3p0:自动化操作,druid hikari-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.pssword}"></property>
    </bean>
    <!--3.sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!--绑定mybatis的配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>
    <!--4.配置dao接口扫描包,动态实现了Dao接口可以注入到spring容器中(代替dao层的实现类)-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--注入sqlSessionFactory-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        <!--要扫描dao包-->
        <property name="basePackage" value="com.kuang.dao"></property>
    </bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值