- 浏览: 88098 次
- 性别:
- 来自: 北京
最新评论
配置文件 配置文件的层次结构如下: • configuration o properties o settings o typeAliases o typeHandlers o objectFactory o plugins o environments environment • transactionManager • dataSource o mappers 1 properties: 用来定义外部properties配置文件信息。比如 <properties resource="org/apache/ibatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="password" value="F2Fa3!33TYyg"/> 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> 那么username和password被替换成dev_user和F2Fa3!33TYyg,而drive和url属性将读取config.properties中的内容从而取得具体值 properties还可以通过SqlSessionFactoryBuilder的build方法作为参数传入: SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, props); // ... or ... SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment, props); property加载顺序: 1、properties元素内部 2、外部properties文件 3、SqlSessionFactoryBuilder的build方法参数 也就是说,build方法参数中的properties优先级高于前两个,因为它是最后被加载,所以会覆盖前两种加载方法加载的properties值。 2 settings Setting 描述 合法值 默认值 cacheEnabled 是否使用全局缓存 true|false true lazyLoadingEnabled 是否使用全局懒加载 true|false true multipleResultSetsEnabled 是否允许返回多个结果集合(需要兼容的驱动) true|false true useColumnLabel 使用列标签取代列名(不同驱动表现不同) true|false true useGeneratedKeys 允许jdbc自动生成主键 true|false false enhancementEnabled(该属性在测试的时候报错,提示不存在,查阅资料好像文档里写错了,这个属性已经取消) 全局性地启用或禁用运行时字节码增强,以优化enhancementEnabled访问Java Bean属性的性能,同时优化延迟加载的性能。 true|false false defaultExecutorType 配置默认执行方式 SIMPLE: nothing special REUSE: reuses prepared statemets BATCH:reuses statements and batches updates SIMPLE REUSE BATCH SIMPLE defaultStatementTimeout 数据库超时时间 Any positive integer Not Set (null) 例子: cacheEnabled" value="true"/> lazyLoadingEnabled" value="true"/> multipleResultSetsEnabled" value="true"/> useColumnLabel" value="true"/> useGeneratedKeys" value="false"/> enhancementEnabled" value="false"/> defaultExecutorType" value="SIMPLE"/> defaultStatementTimeout" value="25000"/> 3 typeAliases java类别名 <typeAliases> <typeAlias alias="Author" type="domain.blog.Author"/> <typeAlias alias="Blog" type="domain.blog.Blog"/> <typeAlias alias="Comment" type="domain.blog.Comment"/> <typeAlias alias="Post" type="domain.blog.Post"/> <typeAlias alias="Section" type="domain.blog.Section"/> <typeAlias alias="Tag" type="domain.blog.Tag"/> typeAliases> 4 typeHandlers Type Handler Java Types JDBC Types BooleanTypeHandler Boolean,boolean Any compatible BOOLEAN ByteTypeHandler Byte,byte Any compatible NUMERIC or BYTE ShortTypeHandler Short,short Any compatible NUMERIC or SHORT INTEGER IntegerTypeHandler Integer,int Any compatible NUMERIC or INTEGER LongTypeHandler Long,long Any compatible NUMERIC or LONG INTEGER FloatTypeHandler Float,float Any compatible NUMERIC or FLOAT DoubleTypeHandler Double,double Any compatible NUMERIC or DOUBLE BigDecimalTypeHandler BigDecimal Any compatible NUMERIC or DECIMAL StringTypeHandler String CHAR,VARCHAR ClobTypeHandler String CLOB,LONGVARCHAR NStringTypeHandler String NVARCHAR,NCHAR NClobTypeHandler String NCLOB ByteArrayTypeHandler byte[] Any compatible byte stream type BlobTypeHandler byte[] BLOB,LONGVARBINARY DateTypeHandler Date(java.util) TIMESTAMP DateOnlyTypeHandler Date(java.util) DATE TimeOnlyTypeHandler Date(java.util) TIME SqlTimestampTypeHandler Timestamp(java.sql) TIMESTAMP SqlDateTypeHadler Date(java.sql) DATE SqlTimeTypeHandler Time(java.sql) TIME ObjectTypeHandler Any OTHER,or unspecified EnumTypeHandler Enumeration Type VARCHAR – any string compatible type,as the code is stored(not the index) 也可以通过实现TypeHandler接口来实现自定义的类型转换器 // ExampleTypeHandler.java public class ExampleTypeHandler implements TypeHandler { public void setParameter( PreparedStatement ps, int i, Object parameter,JdbcType jdbcType) throws SQLException { ps.setString(i, (String) parameter); } public Object getResult( ResultSet rs, String columnName) throws SQLException { return rs.getString(columnName); } public Object getResult( CallableStatement cs, int columnIndex) throws SQLException { return cs.getString(columnIndex); } }// MapperConfig.xml String" jdbcType="VARCHAR" handler="org.apache.ibatis.example.ExampleTypeHandler"/> 这样会覆盖原来ibatis默认的string varchar转换器5 objectFactory ibatis使用objectFactory去创建result object的实例对象,这里可以自己继承DefaultObjectFactory类实现自己的ObjectFactory // ExampleObjectFactory.java public class ExampleObjectFactory extends DefaultObjectFactory { public Object create(Class type) { return super.create(type); } public Object create( Class type, List constructorArgTypes, List<> constructorArgs) { return super.create(type, constructorArgTypes, constructorArgs); } public void setProperties(Properties properties) { super.setProperties(properties); } }// MapperConfig.xml org.apache.ibatis.example.ExampleObjectFactory"> someProperty" value="100"/> 6 plugins ibatis允许插件截断以下方法调用 Executor(update,query,flushStatements,commit,rollback,getTransaction,close,isClosed) ParameterHandler(getParameterObject,setParameters) ResultSetHandler(handleResultSets,handleOutputParameters) StatementHandler(prepare,parameterize,batch,update,query) 必须在理解这些方法的基础上很小心的使用插件,不然很容易破坏ibatis的核心 // ExamplePlugin.java @Intercepts({@Signature( type= Executor.class, method = "update", args = {MappedStatement.class,Object.class})}) public class ExamplePlugin implements Interceptor { public Object intercept(Invocation invocation) throws Throwable { return invocation.proceed(); } public Object plugin(Object target) { return Plugin.wrap(target, this); } public void setProperties(Properties properties) { } } // MapperConfig.xml org.apache.ibatis.example.ExamplePlugin"> someProperty" value="100"/> 7 environments 这个是ibatis 3非常好的一个配置,允许配置多个不懂运行环境参数,不过每个SqlSessionFactory只可以在一种环境下被创建。 利用SqlSessionFactory的build函数 SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,environment); SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,environment,properties); 如果不知名environment参数,则应用默认的环境参数 SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader); SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,properties); xml中如下配置: default="development"> development"> JDBC"> " value=""/> POOLED"> driver" value="${driver}"/> url" value="${url}"/> username" value="${username}"/> password" value="${password}"/> 几个注意点: 默认environment id: default="development"> environment id:development"> 事务控制类型:JDBC"> JDBC:根据jdbc控制事务的提交和回滚 MANAGED:将事务控制转交给容器 数据源类型:POOLED"> UNPOOLED:不使用池技术,在请求到来时直接打开或者关闭数据库连接 必须配置的参数:driver、url、username、password 可选参数:使用driver.xxx来配置,如:driver.encoding=UTF8 POOLED:使用数据库连接池 poolMaximumActiveConnections:同一时间内最大连接数 默认10 poolMaximumIdleConnections:连接最大空闲数目 poolMaximumCheckoutTime:连接被每个任务占用的最大时间 默认20000ms poolTimeToWait:连接池中无可用连接时,线程的等待时间 默认20000ms poolPingQuery:数据库连接状态检测语句,类似于ping的功能 默认NO PING QUERY SET poolPingEnabled:是否允许ping检测 默认false poolPingConnectionsNotUsedFor:对超过指定空闲时间的数据库连接进行状态监测 默认0 (必须在poolPingEnabled设置true情况下) JNDI: initial_context:可选,没看明白,原文:This property is used for the Context lookup from the InitialContext data_source:JNDI数据库名称 使用env.xxx配置可选参数,如:env.encoding=UTF8 8 mappers 配置实体映射文件的路径// Using classpath relative resources <mappers> <mapper resource="org/apache/ibatis/builder/AuthorMapper.xml"/> <mapper resource="org/apache/ibatis/builder/BlogMapper.xml"/> <mapper resource="org/apache/ibatis/builder/PostMapper.xml"/> mappers> // Using url fully qualified paths <mappers> <mapper url="file:///var/sqlmaps/AuthorMapper.xml"/> <mapper url="file:///var/sqlmaps/BlogMapper.xml"/> <mapper url="file:///var/sqlmaps/PostMapper.xml"/> mappers>
发表评论
-
IMP-00058:oracle error 1017
2011-10-24 14:48 1364今天遇到一个Oracle服务器,用Toad和PL/SQL的Im ... -
[转]EXP-00091: 正在导出有问题的统计信息
2011-07-31 15:46 12435EXP-00091: 正在导出有问题的统计信息。EXP-000 ... -
Oracle
2011-06-08 18:21 1087QQ记事本坏了,暂且保存这里备用。 # su - or ... -
【转】 Toad 导入/导出 数据库备份总结
2011-03-18 15:30 6408项目中,需要把公司Oracle服务器上的数据库导入到自己电 ... -
表空间
2011-03-11 11:36 897============ 查询 ============ ... -
Oracle中NLS_LANG的默认值
2011-03-09 11:56 4151Table 4 NLS_LANG Paramet ... -
[转]更改Oracle字符集:把字符集ZHS16GBK换成UTF8
2011-02-28 14:30 8051SQL> select name,value$ fr ... -
创建内部项目数据库时候的最初原型(备份)
2011-01-11 14:52 834创建内部数据库时候的最初原型。(后续有Comment,Inde ... -
ibatis + JEUS + Oracle
2011-01-10 13:42 1021--webt.properties # # logging ... -
DB2 session临时表
2010-12-24 09:58 7932DB2支持session临时表. 该表只能存在于某一sessi ... -
Oracle 练习用(2)
2010-12-22 15:16 805-- 1. sequence excise create s ... -
Oracle 练习用(1)
2010-12-22 14:53 736desc v$logfile; select * from ... -
Merge语句
2010-12-21 15:28 2129把数据从一个表复制到另一个表,插入新数据或替换掉老数据是 ... -
STATSPARK工具练习(上)
2010-12-16 13:45 795可以参考(Statspack-v3.0.pdf) ...
相关推荐
NULL 博文链接:https://king2009163-163-com.iteye.com/blog/657629
介绍了ibatis3.0的配置技巧,包括比较复杂的sql语句的写法。
Spring 3.0 整合 iBatis 3 Beta10 配置
耗时3天,对Struts2+Ibatis+Spring3.0+JreeChart进行了完整整合 包括Spring3.0的事务配置 OSCache二级缓存的配置 log4j实现输出Sql到控制台 JfreeChart与Struts2,Spring3.0的整合 对一个简单的表实现查询,批量删除...
1、mybatis(ibatis3.0)所需要的jar包 2、mybatis官方用户指导手册,中英文版。 3、优点缺点对比,自己总结,希望有参考价值。 4、mybatis使用log4j.xml和log4j.properties两种日志输出方式的配置 5、部分sql文件参考...
xml 自动提示(Spring2.5,Hibernate3.0,Struts2,Ibatis3) Dtd 文件及操作 怎么把它们加到eclipse中,内有图解 很好,很强大
spring-ibatis 整合 springmvc 配置: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context=...
MyBatis是一个半自动化的轻量级的持久化层框架。 MyBatis实际上是Ibatis3.0版本以后的持久化层框架,下面通过本文给大家分享Mybatis 创建方法、全局配置教程详解,需要的朋友参考下吧
集成上面三大框架, 里面有解析Ibatis的简单用法。
运行好,调试好的spring3.0 mvc_rest_demo.war ****************************** * 运行说明 ****************************** 1. 直接部署dist/springmvc_rest_demo.war至tomcat并启动服务器 2. 访问...
这是自己整合的Spring 3.0+Struts2+Mybatis 3 + p6spy +ehcache的平台框架,内含一点示例代码,目前ehcache没有使用。直接编译后发布就能用 测试环境基于JDK1.6+Tomcat 6.0. 大家拿到后请根据实际情况修改 ...
SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...
查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...
第18章 hibernate分页系统(hibernate 3.0) 18.1 hibernate分页系统原理 18.2 封装javabean的commons-beanutils组件 18.3 关于hibernate框架中一些通用类 18.4 实现hibernate分页系统前期准备 18.5 ...
Spring 出品的 JdbcTemplate 对于不想使用hibernate或者ibatis那样需要大量学习成本而且还想获得对象化的人来说是很好用的。但是 JdbcTemplate还是有很多不足之处或者说是缺点。比如你没法像hibernate那样直接传一个...