首先我们要有整个流程的概念,我们先来讲讲这个。
1.首先我们需要连接数据库,对连接的属性进行设置比如用户名密码、连接池中连接数量等等。也就是DataSource
2.和数据库操作有关联的文件有对数据库进行操作的接口,sql语句的xml,domain的类。他们的关系是这样的:对数据库操作的接口和sql语句的xml相对应,然后查出来的结果放到domain的类中。具体他们是怎么通过配置相关联起来的,看下面细讲。
3,配置事务管理器DataSourceTransactionManager。事务管理
p:dataSource-ref="dataSource">
4,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: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;
批量定义别名
mybatis自动扫描包中的po类,自动定义别名,别名是类名(首字母大写或小写都可以,一般用小写)
例如:cn.itcast.mybatis.po.User起别名为User或者user;
在mapper.xml文件中
没有定义别名前
定义别名后,直接resultType中使用别名user;
6,SqlSessionTemplate。使用模板可以让MapperScannerConfigurer选择,,模板中包含了某种sqlSessionFactoryBean
7,MapperScannerConfigurer。选择模板和扫描dao层接口,对应前面的模板,扫描dao的接口 。其实是在这里创建了dao的bean
p:basePackage="com.tkm.popo.dal" />
在xml中配置连接MySQL数据库对应上面的1
其实这里用的是c3p0,C3P0是一个开放源代码的JDBC连接池。