properties属性可以给系统配置一些运行参数,一般放在xml文件或properties文件中,而不放在java代码中。
- Mybatis有三种使用properties的使用方式:
- property子元素
- properties文件
- 程序代码传递
我们可以配置多个键值放在一个properties文件中,也可以把多个键值放在多个文件中。
(一)当属性参数少时--property子元素
(二)当数量多时--properties文件
将一个文件拆成无数小文件。比如将jdbc的driver,url,username,password提取出来,成为一个单独的文件.
jdbc.properties
database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3304/ssm
database.username=root
database.password=root
这时,就可以用<properties resource="jdbc,properties">引入配置,也可以用${database.username}的方法引入properties文件属性。
(三)加密解密--程序传递方式传递参数
真实生产环境,数据库用户密码对开发人员和其他人员保密,properties文件是加密的,需要先解密,然后将解密后的字符串放到properties属性中。
假设,解密方法为CodeUtils.decode(str)
解密用户和密码后创建SqlSessionFacotry
String resource="mybatis-config.xml";
InputStream inputStream;
InputStream in = Resources.getResourceAsStream("jabc.properties");
Properties props = new Properties();
props.load(in);
String username = props.getProperty("database.username");
String password= props.getProperty("database.password");
//解密用户和密码,并在属性中重置
props.put("database.username",CodeUtils.decode(username));
props.put("database.password",CodeUtils.decode(password));
inputStram = Resources.getResourceAsStream(resource);
//使用程序传递的方式覆盖原有的properties属性参数
SqlSessionFactory = new SqlSessionFactoryBulder().build(inputStream,props);
三种方法是有优先级的,最优先使用程序传递,其次properties文件,最后property子元素,Mybatis会根据优先级来覆盖原先的配置属性!一般使用文件,如果有加密就参考上面的,配合文件。
----全文来自《JavaEE 互联网轻量级框架整合开发》