属性值有三种书写方式:
(1)通过元素里面配置元素;
(2)通过元素的resource属性或者url属性进行配置;resource后的字符串若有多级路径时用/隔开;
(3)也可以在SQLSessionFactoryBuilder.build()方法中传入属性,
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props);
// … 或者 …
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, props);
如果属性在不只一个地方进行了配置,mybatis将按照下面的顺序来加载:
a、首先读取properties元素体内指定的属性。
b、然后根据properties元素中的resource属性读取类路径下的属性文件,或根据url属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
c、最后读取作为方法参数传递的属性,并覆盖之前读取的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url属性中指定的配置文件次之,最低优先级的是properties元素中指定的属性。
需要注意的是,在xml文件中url的值若需要用&进行间隔,应使用&
;进行代替