您的位置:首页 > 其它

mybatis-conf.xml常用配置

2016-06-25 21:16 337 查看

properties

这些属性可以外部配置(比如:mybatis.properties)且可动态替换,既可以在java属性文件中配置,也可以通过properties元素的子元素传递。例如:

<!--mybatis.properties配置-->
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/test
username=root
password=123456


在mybatis-conf.xml更改如下:

<!--mybatis-conf.xml配置-->
<properties resource="mybatis.properties">
<property name="password" value="654321"/>
</properties>
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>


属性也可以被传递到SqlSessionBuilder.build()方法中。例如:

Properties **pro** = new Properties();
pro.setProperty("password","987654");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(input,**pro**);


如果属性在不只一个地方进行了配置,那么mybatis将按照下面顺序来加载:

1:在properties元素内指定属性首先被读取(比如:name=”password” value=“654321”)

2:然后再根据properties元素中resource属性读取路径下

xxx.properties文件,并覆盖已读取的同名属性(xml

下的password属性覆盖xxx.properties文件中的password属性)

3:最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。

因此,通过方法传递的属性具有优先级,resource属性指定的 配置文件次之,最低优先级的是properties属性中指定的属性。

Settings

这是Mybatis中极为重要的调整设置,它们会改变Mybatis的运行时行为。下面是描述了设置中各项的意图、默认值等。







一个配置完整的 settings 元素的示例如下:



typeAliases

类型别名是为java类型设置一个短名字。它只和XML有关,存在的意义仅在于用来减少类完全限定名的冗余。例如:

<typeAliases>
<typeAlias type="com.mybatis.test.Blog" alias="Blog"/>
</typeAliases>


或者在Blog.java下使用@Alias()注解:

<!--Blog.java配置-->
@Alias("Blog")
public class Blog {

}


在mybatis-conf.xml如下配置:

<typeAliases>
<package name="com.mybatis.test"/> <!-- 扫描com.mybatis.test -->
</typeAliases>


environment

Mybatis可以配置成适应多种环境,这种机制有助于SQL映射于多种数据库之中。例如:开发、测试、生产环境需要不同配置。不过要记住:尽管可以配置多个环境,每个SqlSessionFactory实例只能选择其中一个。

如果想连接两个数据库,就需要创建两个SqlSessionFactory实例,每个数据库对应一个。

一般情况下environments配置如下:

<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</enviroments>


注意这里的关键点:

●默认的环境 ID(比如:default=”development”)。

●每个 environment 元素定义的环境 ID(比如:id=”development”)。

●事务管理器的配置(比如:type=”JDBC”)。

●数据源的配置(比如:type=”POOLED”)

默认的环境和环境id只要保证默认环境要匹配其中一个环境id.

事务管理器(transationManager)

在Mybatis中有两种类型的事务管理器(type=“[JDBC|MANAGED]”)

JDBC——这个配置直接使用JDBC的提交和回滚设置,它依赖从于数据源得到的连接来管理事务范围。

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

<transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager>


正在使用spring+mybatis,则没有必要配置事务管理器

数据源(dataSource)

数据源的作用:为了方便延时加载,数据源才是必须的。

Mybatis有三种内建的数据源类型(type=”[UNPOOLED|POOLED|JNDI]”

●UNPOOLED——这个数据源实现只是每次被请求时打开和关闭连接。

●POOLED——这个数据源的实现利用“池”的概念将JDBC连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。这是一种使得并发Web应用快速响应请求的流行处理方式。

●JNDI——这个数据源的实现是为了能在EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。下面是使用C3P0数据源的例子:

<!--C3P0.java的配置-->
public class C3P0 extends UnpooledDataSourceFactory{

public C3P0(){
this.dataSource = new ComboPooledDataSource();
}
}

<!--mybatis-conf.xml配置-->
<dataSource type="com.mybatis.test.C3P0">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test" />
<property name="user" value="root" />
<property name="password" value="123456" />
</dataSource>


Mappers

既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。但是首先我们需要告诉 MyBatis 到哪里去找到这些语句。例如:

<mappers>
<mapper resource="BlogMapper.xml"/>
</mappers>


如果在接口中使用select注解,例如:

<!--BlogMapper.java配置-->
public interface BlogMapper {
@Select("select * from t_blog where id=#{id}")
Blog selectBlog(int id);
}
<!--mybatis-con.xml-->
<mappers>
<mapper class="com.mybatis.test.BlogMapper"/>
</mappers>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: