Mybatis的xml配置简单优化

上一篇:Mybatis基于动态代理(接口开发)的CRUD

我们可以通过几个简单的方法对开发中的代码进行优化,如在项目的mybatis配置文件config.xml中 配置properties,配置setting,配置别名。以达到简化代码、优化性能、便于维护的目的。

配置属性(properties)

方法一:在xml中配置

<configuration>
		<!-- 方法一:在xml中配置 -->
	 <properties>
		<property name="driver" value="com.mysql.cj.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql://localhost:3306/testdb?&amp;useSSL=false&amp;serverTimezone=UTC" />
		<!-- <property name="username" value="xxxxxx" /> -->
		<property name="password" value="xxxxxx" />
		
		<!-- 开启特效,为占位符指定一个默认值,${username:ut_user},如果属性 'username' 没有被配置,'username' 属性的值将为 'ut_user' -->
		<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/> 
		<!-- 为避免冲突,修改默认值的分隔符,${username?:ut_user} -->
		 <property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/> 
	</properties> 
	
<configuration>

方法二:在外部文件 db.properties 中配置,然后引用进来即可

<configuration>
	<!-- 方法二:在外部文件  db.properties 中配置,然后引用进来即可 -->
	<!-- 小细节:db.properties中存放k-v对,k-v对不需要打引号,另外,在.properties中不需要转义(在.xml中&需要被转义成&amp;),否则会报错 
	<properties resource="db.properties"></properties> -->
	
<configuration>

db.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/testdb?&useSSL=false&serverTimezone=UTC
username=xxxxxx
password=xxxxxx

方法三:属性也可以被传递到 SqlSessionFactoryBuilder.build()方法中


	<!-- 方法三:属性也可以被传递到 SqlSessionFactoryBuilder.build()方法中
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props);
	// ... 或者 ...
	SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, props);
	-->

通过${key}来引用对应的属性值。

<dataSource type="POOLED">
	<property name="driver" value="${driver}" />
	<property name="url" value="${url}" />
	<property name="username" value="${username?:root}" />
	<property name="password" value="${password}" />
</dataSource>

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

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

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

在实际使用中,还是推荐通过第二种方法,单独用一个properties文件来配置相关属性较方便。

配置别名
<configuration>

	<!-- 配置别名 -->
	<typeAliases>
		<!-- 单个定义类型别名 -->

	<typeAlias type="org.ltx.entity.Person" alias="person" /> 

		<!-- 批量定义类型别名 -->
		<!-- 在没有注解的情况下,会使用类的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author 的别名为 author;若有注解,则别名为其注解值。 
			@Alias("author") public class Author { ... } -->
			
		<package name="org.ltx.entity" />
	</typeAliases>
	
	......
	
</configuration>

除了自定义别名外,MyBatis还内置了一些常见类的别名。

配置setting

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

这项配置影响比较大,根据项目的具体情况来考虑,一般不要轻易设置。

在conf.xml中设置.

	
	<settings>
			<setting name="cacheEnabled" value="false"  />
			<setting name="lazyLoadingEnabled" value="false"  />
			......
	</settings>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值