Spring与MyBatis整合

步骤一:导入Spring与Mybatis的依赖包
步骤二:创建Mybatis与Spring的配置文件,数据库连接配置文件database.properties,log4j.properties
步骤三:UserDaoImpl中声明SqlSessionTemplate对象,配置文件需要配置SqlSessionTemplate的bean,同时以构造注入的方式,注入SqlSessionFactory

使用模板方式一,具体配置如下:

       1. UserDaoImpl代码段:

public class UserDaoIml extends SqlSessionDaoSupport implements UserDao  {
            //SqlSession的模板
            SqlSessionTemplate sqlSession;

            public SqlSessionTemplate getSqlSession() {
                return sqlSession;
            }

            public void setSqlSession(SqlSessionTemplate sqlSession) {
                this.sqlSession = sqlSession;
            }


         2.applicationContext.xml,配置如下:

<!--配置SqlSessionTemplate的bean,只能以构造注入方式-->
              <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
                   <constructor-arg ref="sqlSesssionFactory"></constructor-arg>
               </bean>

<!--配置UserDao的bean.并注入SqlSessionTemplate,设值注入方式setter-->
               <bean id="userDao" class="com.bdqn.spring.mybatis.dao.impl.UserDaoIml">
                   <property name="sqlSession" ref="sqlSession"></property>
               </bean>

 

使用模板方式二,具体配置如下:
      1.

public class UserDaoIml extends SqlSessionDaoSupport implements UserDao  {
           //查询所有用户信息
           @Override
           public List<User> getUserList() {
               return  this.getSqlSession().getMapper(UserDao.class).getUserList();
           }

      2. UserDao中直接注入sqlSesssionFactory

<bean id="userDao" class="com.bdqn.spring.mybatis.dao.impl.UserDaoIml">
         <property name="sqlSessionFactory" ref="sqlSesssionFactory"></property>
</bean>

 

实现注入映射器(根据接口生成Dao实现类)方式一:
         该种方式可以根据Dao接口自动生成实现类的bean,当接口较多的情况下,配置项也会随之增加,代码比较繁琐

<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
           <property name="mapperInterface" value="com.bdqn.spring.mybatis.dao.UserDao"></property>
            <property name="sqlSessionFactory" ref="sqlSesssionFactory"></property>
</bean>

实现注入映射器(根据指定包中所有接口生成实现类),方式二(推荐使用):
         该种方式只能通过注解方式,实现注入,默认生成实现类的名字为:接口首字母小写

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.bdqn.spring.mybatis.dao"></property>
</bean>

 

实现事务增强配置:
         步骤一:配置事务管理器,配置如下:
             <!--1.配置事务管理器-->

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
          <property name="dataSource" ref="dataSource"></property>
</bean>

         步骤二:为指定的事务管理器配置事务规则,配置如下:
          propagation="REQUIRED":该事务规则为:支持当前事务,如果没有事务会重新开启一个新的事务(推荐使用)

<tx:advice id="txAdvice" transaction-manager="txManager">
         <tx:attributes>
             <tx:method name="add*" propagation="REQUIRED"/>
             <tx:method name="delete*" propagation="REQUIRED"></tx:method>
             <tx:method name="find*" propagation="REQUIRED"></tx:method>
             <tx:method name="update*" propagation="REQUIRED"></tx:method>
         </tx:attributes>
</tx:advice>


         步骤三:织入事务增强,配置如下:

<aop:config>
       <aop:pointcut id="pointcut" expression="execution(public int addUser(com.bdqn.spring.mybatis.entity.User))"></aop:pointcut>
       <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"></aop:advisor>
</aop:config>


         步骤四:测试代码:

@org.junit.Test
             public void addUser() {
                 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
                 UserService userService = (UserService) context.getBean("userService");
                 User user=new User();
                 user.setUserName("新用户");
                 user.setUserCode("newuser");
                 user.setUserPassword("1111111");
                 user.setUserRole(1);
                 userService.addUser(user);
            }

 

spring中配置数据源的方式:

  1. 使用数据库配置文件(推荐使用该种方法)
  2. 使用JNDI
  3. 在dataSource配置中,直接引用数据库连接信息

 

bean的作用域:scope属性:

  • singleton该值表示当前的bean只创建一个实例,每次都会请求该实例。(单例模式,效率高,线程不安全)
  • prototype:默认的值,每次请求都会创建新的bean实例。(多例模式,效率较低,安全性高)

 

spring中的自动装配:

  • no:不进行自动装配,需要显示指定要注入的bean
  • byType:按类型自动匹配
  • byName:按名称自动装配
  • constructor:按照构造方法中提供的参数进行注入

 

拆分spring配置文档:

  • 但spring只配置文件中配置项较多复杂时,可以按照层进行拆分,拆分后需要在主配置文件中得到如子配置文件(没有springMVC框架时)

 

使用注解实现声明事务:
      1、配置事务管理器:
            <!--1.配置事务管理器-->

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
          <property name="dataSource" ref="dataSource"></property>
</bean>

      2、<tx:advice id="txAdvice" transaction-manager="txManager">
      3、在业务层(Service实现类上使用注解@Transational进行标注,表示该类下所有的方式使用注解)
              备注:1、如果事务管理器的id是:自己命名的,必须设置transaction-manager属性的值为指定的名称
                         2、事务管理器的id为transactionManager时,<tx:annotation-driven/>可以省略“transaction-manager”

 

切入点表达式匹配的规则

  1. public * addNewUser(entity.User):“ * ”表示匹配指定方法所有类型的返回值。
  2. public void *(entity.User):“ * ”表示匹配所有方法名。
  3. public void addNewUser(.. ):“ .. ”表示匹配指定方法所有参数个数和类型。
  4. * com.service.*.*(..):匹配com.service包下所有类的所有方法,参数任意。
  5. * com.service..*.*(..):匹配com.service包及其子包下所有类的所有方法,参数任意。
  6. public voif addUser(entity.User):表示匹配具体的方法。

 


—— 不论身在何处,不论世事如何艰难,你都在向胜利出发。毋庸置疑。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值