栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis配置的理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis配置的理解

通常写法



	
    
        
    
    
        
        
    
    
        
        
        
    
    
        
            
            
                
                
                
                
            
        
    
    
    
        
        
        
        
    
    
    
        
        
        
    


这些配置的顶层结构在配置文件要顺序编写。

1、properties 属性

这些属性可以在外部进行配置,并可以进行动态替换(替换的是dataSource的子元素的property的值)。既可以在典型的Java属性文件中配置这些属性,也可以在properties元素的子元素中设置。

(1)java中配置
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props);
// ... 或者 ...
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, props);
(2)xml中配置

	 
	 


如果一个属性在不只一个地方进行了配置,那么 MyBatis将按照下面的顺序来加载(即优先级):

  • 首先读取在 properties元素体内指定的属性
  • 然后根据 properties元素中的 resource属性读取类路径下属性文件,或根据 url属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
  • 最后读取java中作为方法参数传递的属性,并覆盖之前读取过的同名属性。

从 M y B a t i s 3.4.2 MyBatis 3.4.2 MyBatis3.4.2 开始,你可以为占位符指定一个默认值。
如果属性 ‘username’ 没有被配置,‘username’ 属性的值将为 ‘root’


	
	
	
	
	

这个特性默认是关闭的。要启用这个特性,需要添加一个特定的属性来开启这个特性。


	
 	 

2、setting 设置

setting会改变 MyBatis的运行时行为。

这里只列举了常用的,详细了解可以查看官方文档。

例如:


	
	


对于获取该表的数据可以不用取别名获取(对于javaBean的createTime和表中的create_time)

3、typeAliases 类型别名

类型别名可为 Java类型设置一个缩写名字。 它仅用于XML配置,意在降低冗余的全限定类名书写。

(1)typeAlias

alias为别名,type为需要设置别名的JavaBean类的全限定类名。不设置alias属性默认的别名为首字母小写的该类名(即blog)。


	
	

(2)package

该包下的类的别名都为首字母小写的该类名,局限在于不可随意取别名。


	
	

(3)@Alias

为了弥补package子元素不可随意取别名,可以用@Alias注解实现。因此,该注解需要package子元素的搭配。

4、typeHandlers 类型处理器

MyBatis在设置预处理语句PreparedStatement中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java类型。

5、plugins 插件

M y B a t i s MyBatis MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下, M y B a t i s MyBatis MyBatis 允许使用插件来拦截的方法调用包括:

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
  • ParameterHandler (getParameterObject, setParameters)
  • ResultSetHandler (handleResultSets, handleOutputParameters)
  • StatementHandler (prepare, parameterize, batch, update, query)

这些类中方法的细节可以通过查看每个方法的签名来发现,或者直接查看 M y B a t i s MyBatis MyBatis 发行包中的源代码。 如果你想做的不仅仅是监控方法的调用,那么你最好相当了解要重写的方法的行为。 因为在试图修改或重写已有方法的行为时,很可能会破坏 M y B a t i s MyBatis MyBatis 的核心模块。 这些都是更底层的类和方法,所以使用插件的时候要特别当心。通过 M y B a t i s MyBatis MyBatis 提供的强大机制,使用插件是非常简单的,只需实现 Interceptor接口,并指定想要拦截的方法签名即可。

6、environments 环境配置

M y B a t i s MyBatis MyBatis 可以配置成适应多种环境,这种机制有助于将 S Q L SQL SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 S c h e m a Schema Schema 的多个生产数据库中使用相同的 S Q L SQL SQL 映射。还有许多类似的使用场景。不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory实例只能选择一种环境。(environments的default属性只能设置一个对应的id)
所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推。


	 
	 	
	 		
 		
 		
 			
 			
			
	 		
 		
	

  • 默认使用的环境 ID,必须选定一个ID(比如:default="development")
  • 每个 environment 元素定义的环境 ID,ID可以随意取名(比如:id="development")
  • 事务管理器的配置(比如:type="JDBC")
  • 数据源的配置(比如:type="POOLED")
(1)transactionManager

有两种类型的事务管理器:

  • JDBC– 这个配置直接使用了 JDBC的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
  • MANAGED– 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection属性设置为false来阻止默认的关闭行为。
(2)dataSource

有三种内建的数据源类型:UNPOOLED、POOLED和JNDI

UNPOOLED

UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。

POOLED

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

JNDI

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

常见的属性:

  • driver– 这是 JDBC 驱动的 Java 类全限定名(并不是 JDBC 驱动中可能包含的数据源类)。
  • url– 这是数据库的 JDBC URL 地址。
  • username– 登录数据库的用户名。
  • password– 登录数据库的密码。
  • defaultTransactionIsolationLevel– 默认的连接事务隔离级别。
  • defaultNetworkTimeout– 等待数据库操作完成的默认网络超时时间(单位:毫秒)。
7、databaseIdProvider 数据库厂商标识

M y B a t i s MyBatis MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId属性。 M y B a t i s MyBatis MyBatis 会加载带有匹配当前数据库 databaseId属性和所有不带 databaseId属性的语句。 如果同时找到带有 databaseId和不带 databaseId的相同语句,则后者会被舍弃。 为支持多厂商特性,只要像下面这样在mybatis-config.xml 文件中加入 databaseIdProvider即可:


databaseIdProvider对应的 DB_VENDOR实现会将 databaseId设置为 DatabasemetaData#getDatabaseProductName()返回的字符串。由于通常情况下这些字符串都非常长,而且相同产品的不同版本会返回不同的值,你可能想通过设置属性别名来使其变短:


	
	
	
	

设定映射文件的SQL语句的数据库厂商类型只要修改datavaseId属性,如下:

 
8、mappers 映射器

接告诉 M y B a t i s MyBatis MyBatis 到哪里去找映射文件。


	
	



	 
	  



	 
	 



	 

注意:接口和映射文件需要放在同一个目录下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690914.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号