使用c3p0连接数据库、操作数据库和数据库的事务管理,基于mybatis框架

首先我们要有整个流程的概念,我们先来讲讲这个。

1.首先我们需要连接数据库,对连接的属性进行设置比如用户名密码、连接池中连接数量等等。也就是DataSource

2.和数据库操作有关联的文件有对数据库进行操作的接口,sql语句的xml,domain的类。他们的关系是这样的:对数据库操作的接口和sql语句的xml相对应,然后查出来的结果放到domain的类中。具体他们是怎么通过配置相关联起来的,看下面细讲。

3,配置事务管理器DataSourceTransactionManager。事务管理


class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource">


4,TransactionTemplate。事务管理的模板


class="org.springframework.transaction.support.TransactionTemplate"
p:transactionManager-ref="transactionManager">

事务的管理分为编程式和xml配置声明式,参考链接http://www.cnblogs.com/yangyquin/p/5583158.html

http://blog.csdn.net/zq9017197/article/details/6321391

编程式的复制一段过来

boolean success = (Boolean) transactionTemplate.execute(new TransactionCallback() {
           @Override
           public Boolean doInTransaction(TransactionStatus status) {
               try {

  } catch (Exception e) {
                   LOGGER.error("创建会员:" + user, e);
                   status.setRollbackOnly();
                   return Boolean.FALSE;
               }
               return Boolean.TRUE;
           }
          
       });


5,SqlSessionFactoryBean。SqlSessionFactoryBean是一个工厂bean,它的作用就是解析配置(数据源、别名等)。配置数据源和xml文件的路径,还有typeAliasesPackage和typeAliases

p:dataSource-ref="dataSource" 
p:typeAliasesPackage="com.tkm.popo.domain"
p:typeAliases="com.alibaba.alp.plugin.notify.pojo.Notify"
p:mapperLocations="classpath:mapper/*/*.xml" />


 单个定义别名

 使用typeAliases标签,定义别名;将cn.itcast.mybatis.po.User 起别名为user;

[html]  view plain  copy
  1.          
  2. <typeAliases>  
  3.       
  4.     <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>  
  5. typeAliases>  

  批量定义别名

  mybatis自动扫描包中的po类,自动定义别名,别名是类名(首字母大写或小写都可以,一般用小写)

  例如:cn.itcast.mybatis.po.User起别名为User或者user;

[html]  view plain  copy
  1.   
  2. <typeAliases>  
  3.       
  4.     <package name="cn.itcast.mybatis.po" />  
  5. typeAliases>  

在mapper.xml文件中

  没有定义别名前

[html]  view plain  copy
  1. <select id="findUserById" parameterType="int"  
  2.     resultType="cn.itcast.mybatis.po.User">  
  3.     select * from USER where id = #{id}  
  4. select>  

  定义别名后,直接resultType中使用别名user;

[html]  view plain  copy
  1. <select id="findUserById" parameterType="int"  
  2.     resultType="user">  
  3.     select * from USER where id = #{id}  
  4. select>  

6,SqlSessionTemplate。使用模板可以让MapperScannerConfigurer选择,,模板中包含了某种sqlSessionFactoryBean



       
   



7,MapperScannerConfigurer。选择模板和扫描dao层接口,对应前面的模板,扫描dao的接口 。其实是在这里创建了dao的bean

p:sqlSessionTemplateBeanName="iSqlSessionTemplate"  
p:basePackage="com.tkm.popo.dal" />  


SqlSessionFactoryBean是生产SqlSessionFactory的一种工厂Bean;SqlSessionFactory是一种生产SqlSession的工厂;SqlSession是代表数据库连接客户端和数据库Server之间的会话信息;SqlSessionTemplate是SqlSession的一个具体实现。




在xml中配置连接MySQL数据库对应上面的1

destroy-method="close">







   



 







其实这里用的是c3p0,C3P0是一个开放源代码的JDBC连接池。

  1.     
  2.   
  3.   "acquireRetryDelay">1000   

  1.    
  2.   
  3.   "autoCommitOnClose">false   

  1.    
  2.   
  3.   "automaticTestTable">Test   

  1.    
  2.   
  3.   "preferredTestQuery">select id from test where id=1  

  1.    
  2.   
  3.   "breakAfterAcquireFailure">false   

  1.     
  2.   
  3.   "checkoutTimeout">100   
  1.     
  2.   
  3.   "connectionTesterClassName">   
  1.    
  2.   
  3.   "idleConnectionTestPeriod">60 
  1.     
  2.   
  3.   "initialPoolSize">3   
  1.    
  2.   
  3.   "maxIdleTime">60   
  1.    
  2.   
  3.   "maxPoolSize">15 
  1.    
  2.   
  3.   "maxStatements">100   
  1.     
  2.   
  3.   "maxStatementsPerConnection"
  1.     
  2.   
  3.   "numHelperThreads">3   
  1.    
  2.   
  3.   "overrideDefaultUser">root   
  4.   
  1.    
  2.   
  3.   "overrideDefaultPassword">password   
  4.   
  1.     
  2.   
  3.   "password">   
  1.     
  2.   
  3.   "propertyCycle">300   
  1.  
  1. "testConnectionOnCheckout">false   
  2.   
  3.      
  4.   
  5.   "testConnectionOnCheckin">true   
  6.   
  1.     
  2.   
  3.   "user">root   

你可能感兴趣的:(mybatis,mysql,数据库,mybatis,spring事务管理)