Mybatis-核⼼配置⽂件l标签详解(上)前⾔
Mybatis是基于XML配置或者注解完成数据库操作
前⾯⼊门了Mybatis,完成了CRUD
现在仔细了解l中的配置
官⽹
先看官⽹:
⼀切以官⽹为准,补充说明官⽹
配置有上述这些
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象⼯⼚)
plugins(插件)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库⼚商标识)
mappers(映射器)
配置⽂件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-////DTD Config 3.0//EN"
"/dtd/mybatis-3-config.dtd">
<!--核⼼配置⽂件-->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
xpath路径怎么写<dataSource type="POOLED">
<property name="driver" value="sql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF8&ser verTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--每⼀个l都需要在mybatis的核⼼配置⽂件注册-->
<mappers>
<mapper resource="com/learn/l"/>
year函数的作用
</mappers>
</configuration>
约束
其中xml配置信息的约束⽂件,应该都很熟悉
这是主配置⽂件约束:configuration
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-////DTD Config 3.0//EN"
"/dtd/mybatis-3-config.dtd">
⽽我们的l⽂件是这种约束:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-////DTD Mapper 3.0//EN"
"/dtd/mybatis-3-mapper.dtd">
这是⼀种XML的Schema约束
不了解的可以看:
这些约束限制了标签,可以查看有什么标签
从约束⽂件
中可以看到:这些标签是有顺序的,如果顺序错了会报错
configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, da tabaseIdProvider?, mappers?)
最外层是configuration 根标签,表⽰这是Mybatis核⼼配置⽂件l
属性(properties)
properties标签提供了引⼊外部⽂件或者设置变量的⽅法threadlocal例子
在这个标签内定义的属性可以在该xml⽂件引⽤(就会Java的全局变量⼀样)
如:
<properties>
<property name="id" value="zhangsan"/>properties文件用什么打开
</properties>
这样是设置了⼀个id = zhangsan 键值对,在该xml使⽤时直接引⽤id即可,取值直接${id}就可以取出,
这就让我们可以动态配置信息,在后⾯就可以⽤外部⽂件配置数据库连接信息
(和Map类似)
可以引⼊外部⽂件
提供了两种⽅法:
resource:读取相对地址⽂件
url:读取绝对地址⽂件
如:
<properties resource="db.properties"/>
<properties  url="file:D:\JavaProject\mybatis\mybatis-cache\src\main\resources\db.properties"/>
如果是绝对路径:url前要加上file:,这是只是windows帮我们省略了
读取的⽂件也得以键值对(a:b或者a=b)的⽅式存储数据,不然就读不出(Java的properties⽂件)
不以name=value的形式,IDEA也会提醒你
如:在db.properties⽂件编写(也可以⽤:分隔,不过IDEA会警告)
sql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username=root
password=root
然后把以前的配置改变:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-////DTD Config 3.0//EN"
"/dtd/mybatis-3-config.dtd">
<configuration>
<!--引⼊外部配置⽂件:优先使⽤外部⽂件-->
<properties resource="db.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
js正则表达式作用
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.learn.dao"/>
</mappers>
</configuration>
这样⼀样可以完成数据库的连接,这就是获取了配置⽂件中是键值对属性
Java传值
很明显,如果是XML或者properties⽂件中配置,就⽆法对数据加密
加密就需要Java程序
除了在XML或者properties⽂件中配置,也可以在Java程序中配置
SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(reader, props);
// ... 或者 ...
SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(reader, environment, props);
这个涉及到Mybatis⼯作流程,后⾯再细说
如果数据很重要,可以选择Java加密传输
配置读取顺序
如果⼀个属性在不只⼀个地⽅进⾏了配置,那么,MyBatis 将按照下⾯的顺序来加载:
⾸先读取在 properties 元素体内指定的属性cpa广告联盟平台
然后根据 properties 元素中的 resource 属性读取类路径下属性⽂件,或根据 url属性指定的路径读取属性⽂件,并覆盖之前读取过的同名属性
最后读取作为⽅法参数传递的属性(Java传值),并覆盖之前读取过的同名属性
因此,通过⽅法参数传递的属性具有最⾼优先级,resource/url 属性中指定的配置⽂件次之,最低优先级的则是 properties 元素中指定的属性
占位符
从 MyBatis 3.4.2 开始,你可以为占位符指定⼀个默认值
<dataSource type="POOLED">
<!--如果属性'username'没有被配置,'username'属性的值将为'ut_user'-->
<property name="username" value="${username:ut_user}"/>
</dataSource>
这个特性默认是关闭的,需要在属性中打开
<properties resource="org/mybatis/example/config.properties">
<!--启⽤默认值特性-->
<property name="org.apache.ibatis.able-default-value" value="true"/>
</properties>
可以看出,它也是引⽤了外部配置⽂件
属性名
可以看出,Mybatis读取键值对是以:或者=为分割
所以,如果属性名存在冒号、等号,或者在 SQL 映射中使⽤了 OGNL 表达式的三元运算符(如: ${tableName != null ? tableName
:'global_constants'})
需要修改默认值的分隔符
<properties resource="org/mybatis/example/config.properties">
<!--...-->
<property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/><!--修改默认值的分隔符-->
</properties>
最好还是别瞎写
只能引⼊⼀个外部⽂件
很明显,⼀个xml⾥只能有⼀个properties标签,标签中也只能有⼀个resource
所以,如果想要配不同环境的话,需要写多个核⼼配置⽂件
设置(settings)
这是⼀个很重要的标签,通过该标签改变Mybatis的内部配置

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。