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>
相关文章推荐
- jquery取选中值
- socket总结
- 老板/员工流式并行计算模型
- js(三)——创建对象
- SpringMVC学习笔记
- JConsole&VisualVM监控总结
- ffmpeg输出到屏幕(二)
- [网络配置相关]——ifconfig命令、ip命令、route命令
- NAT学习笔记
- ffmpeg mp4 to wmv and wmv to mp4
- 2016程序设计实习期末考试总结
- 从0开始
- 万物通一理:大道至简
- [2016/06/25] CUDA矩阵乘法 简单实现
- OSG拾取对应的实体
- 查看linux系统版本的方法
- 最小权值和
- vmstat
- map如何按value来排序------用带pair的vector吧
- 弹窗