Mybtatis配置学习笔记

1. 的type属性、其有三种取值: 
  • a:如果将类型设置成 UNPOOLEDMyBatis 会为每一个数据库操作创建一个新的连接,并关闭它。该方式
    适用于只有小规模数量并发用户的简单应用程序上。
    b: 如果将属性设置成 POOLEDMyBatis 会创建一个数据库连接池,连接池中的一个连接将会被用作数据
    库操作。一旦数据库操作完成,
    MyBatis 会将此连接返回给连接池。在开发或测试环境中,经常使用此
    种方式。
    c:如果将类型设置成 JNDIMyBatis 从在应用服务器向配置好的 JNDI 数据源 dataSource 获取数据库
    连接。在生产环境中,优先考虑这种方式。


2. 这个配置中有type也有JDBC,JTA,EXTERNAL.我想问下基于JDBC,及JTA的事务可以应用到哪中程度.而对EXTERNAL在什么情况下会用到?

JDBC使用 数据库自己的事务(局部事务),connect.beginTranstion(), connect.commit()等 

MANAGED : 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让 容器来管理事务的整个生命周期(比如 Spring 或 JEE  应用服务器的上下文) 默认 情况下它会关闭连接。 然而一些容器并不希望这样, 因此如果你需要从连接中停止 它,将 closeConnection 属性设置为  false。例如:



常用的是External,应为在我的应用中,事务都是用spring托管的,如果不是,那就就用jdbc,如果在app server中,你又不想使用容器托管事务,那就用JTA





可以同时配置两个数据库,
="shoppingcart">
="shoppingcart">
="MANAGED" />
="JNDI">
="data_source" value="java:comp/jdbc/ ShoppingcartDS" />


="reports">
="MANAGED" />
="JNDI">
="data_source" value="java:comp/jdbc/ReportsDS" />


我们可以如下为每个环境创建一个 SqlSessionFactory:
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
defaultSqlSessionFactory = 
new SqlSessionFactoryBuilder().
build(inputStream);
cartSqlSessionFactory = 
new SqlSessionFactoryBuilder().build(inputStream, "shoppingcart");
reportSqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream,"reports");
3.类型别名 typeAliases
SQLMapper 配置文件中,对于 resultType parameterType 属性值,我们需要使用 JavaBean 的完全限定名。 
resultType为实体类的路径

4.SQL 映射定义 Mappers
Mapper XML 文件中包含的 SQL 映射语句将会被应用通过使用其 statementid 来执行。我们需要在 mybatisconfig.xml 文件中配置 SQL Mapper 文件的位置。
XML Code

="com/mybatis3/mappers/StudentMapper.xml" />
="file:///D:/mybatisdemo/app/mappers/TutorMapper.xml" />
="com.mybatis3.mappers.TutorMapper" />
="com.mybatis3.mappers" />
5. environment
MyBatis 支持配置多个 dataSource 环境,可以将应用部署到不同的环境上,如 DEV( 开发环境 ) TEST (测试换将),
QA (质量评估环境) ,UAT( 用户验收环境 ),PRODUCTION (生产环境),可以通过将默认 environment 值设置成想要的
environment id



以上每一个 标签的属性有助于从不同类型的资源中加载映射 mapper
resource 属性用来指定在 classpath 中的 mapper 文件。
url 属性用来通过完全文件系统路径或者 web URL 地址来指向 mapper 文件
class 属性用来指向一个 mapper 接口
package 属性用来指向可以找到 Mapper 接口的包名



你可能感兴趣的:(进阶---丁级)