【Mybatis学习】Mybatis框架中的配置
来源:互联网 发布:java中try catch的用法 编辑:程序博客网 时间:2024/05/16 02:06
Mybatis中的配置
配置文件整体结构
<configuration><!--配置--> <properties/><!--属性--> <settings/><!--设置--> <typeAliases/><!--类型命名--> <typeHandlers/><!--类型处理器--> <objectFactory/><!--对象工厂--> <plugins/><!--插件--> <environments default=""><!--配置环境--> <environment id=""><!--环境变量--> <transactionManager type=""/><!--事物管理器--> <dataSource type=""/><!--数据源--> </environment> </environments> <databaseIdProvider type=""/><!--数据库厂商标识--> <mappers/><!--映射器--></configuration>
1.properties
1.1 property
配置该属性可以在上下文中使用这些配置好的属性,比如dataSource。
<dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8"/> <property name="username" value="wsz"/> <property name="password" value="wsz"/> </dataSource>
1.2 properties配置文件
该属性可以读取项目中的文件,比如通用的数据库配置文件,改进上面的dataSource。首先新建jdbc.properties文件,然后在配置文件中引用。jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8jdbc.username=wszjdbc.password=wsz
<properties resource="jdbc.properties"/> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments>
1.3程序参数传递
如果我们在jdbc.properties文件中设置的数据库链接密码为特定的密文,直接使用则无法进行与数据库之间的交互,需要先读取处理后才能操作。public static void main(String[] args) throws Exception {decodePassword();}public static void decodePassword() throws IOException {SqlSessionFactory sqlSessionFactory = null;InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");Reader reader = new InputStreamReader(inputStream);InputStream inputStream1 = Resources.getResourceAsStream("jdbc.properties");Reader reader1 = new InputStreamReader(inputStream1);Properties properties = new Properties();properties.load(reader1);properties.setProperty("username",decode(properties.getProperty("jdbc.username")));properties.setProperty("password",decode(properties.getProperty("jdbc.password")));synchronized (Demo1.class){if(sqlSessionFactory == null){sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader,properties);}}SqlSession session = sqlSessionFactory.openSession();UserMapper mapper1 = session.getMapper(UserMapper.class);List<User> list = mapper1.findAll();for (User u : list) {System.out.println(u.toString());}session.close();}public static String decode(String str){return str;}
1.4三者优先级
注意:不建议混合使用,不易管理。
- properties元素中的属性先被读取
- 根据properties元素中的resource属性读取项目路径下属性文件,或根据URL指定的路径读取属性文件,并覆盖已读取的同名属性
- 读取作为方法参数传递的属性,并覆盖已读取的同名属性
2.设置settings
覆盖该项的开关。true、falsefalseaggressiveLazyLoading为true时对任意延迟属性的调用都会使带有延迟加载属性的对象完整加载。反之按需记载。true、falsetrueuseGeneratedKeys运行JDBC支持自动生成主键,需要驱动兼容。为true时,则强制使用自动生成主键,
尽管有些驱动不兼容但依旧可以工作(Derby)true、falsefalseautoMappingBehavior指定Mybatis如何自动映射列到字段或属性。
NONE标识取消自动映射。
PARTIAL只会自动映射没有定义嵌套结果集映射的结果集。
FULL自动映射任意复杂的结果集,无论是否嵌套。NONE
PARTIAL
FULLPARTIALlocalCacheScope利用本地缓存机制(Local Cache)防止循环引用和加速重复嵌套查询。
默认SESSION,会缓存一个会话中执行的所有查询。
STATEMENT,本地会话仅用在语句执行上,对相同SqlSession的不同调用将不会数据共享。SESSION
STATEMENTSESSIONjdbcTypeForNull没有为参数提供特定的JDBC类型是,为空值指定JDBC类型。
3.别名typeAliases
可以简化过长的类全限定名。分为系统定义别名、自定义别名。Mybatis中别名不区分大小写。别名在解析配置文件时生成,长期保存在Configuration对象中,可以随时获取并使用。
3.1自定义别名
注意:不要别名重复。
<typeAliases> <typeAlias type="domain.User" alias="user"/></typeAliases>
<typeAliases> <package name="domain"/></typeAliases>
@Alias("user")public class User implements Serializable{......}
4.environment配置环境
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment>environments的default可以选择不同的数据源配置。<environment id="development1">****
</environment>
</environments>
transactionManager配置数据库事务:
- JDBC,使用JDBC方式管理事务
- MANAGED,采用容器方式管理事务,在JNDI数据源中常用
- 自定义
dataSource数据库连接方式:
- UNPOOLED,非连接池数据库,使用org.apache.ibatis.datasource.unpooled.UnpooledDataSource实现。
- POOLED,连接池数据库,使用***.pooled.PooledDataSource实现。
- JNDI,JNDI数据源,使用***.jndi.JndiDataSourceFactory实现。
- 自定义数据源,***.DataSourceFactory实现。比如DBCP:***.DbcpDataSourceFactory
5.引入映射器
可用文件路径、包名、类注册、mapper.xml引入,一般使用包名引用。下面三种分别为文件路径、包名、类注册引入。
<mappers> <mapper resource="dao/UserMapper.xml"/> <package name="dao"/> <mapper class="dao.UserMapper"/></mappers>
阅读全文
0 0
- 【Mybatis学习】Mybatis框架中的配置
- 【Mybatis学习】Mybatis框架中的动态sql
- MyBatis框架学习--配置主配置文件
- Mybatis学习之优化MyBatis配置文件中的配置
- MyBatis学习笔记(四)优化MyBatis配置文件中的配置
- mybatis学习之配置mybatis
- mybatis-memcached框架配置
- mybatis 框架的配置
- mybatis框架的配置
- MyBatis框架的配置
- Mybatis(框架配置)
- MyBatis框架中的事务处理
- Mybatis框架学习笔记
- mybatis框架学习demo
- mybatis框架学习整理
- 【框架学习】myBatis
- Mybatis框架研究学习
- 【框架学习】Mybatis简解
- LInux中存储设备的管理
- Golang游戏服务器
- Request header field Content-Type is not allowed by Access-Control-Allow-Headers跨域
- zookeeper原理及作用
- sql(join中on与where区别) / NVL函数 / oracle存储过程中is和as区别 / JAVA调用数据库存储过程
- 【Mybatis学习】Mybatis框架中的配置
- 腾讯we大会~2017
- Caisa and Pylons
- mybatis 一对一 查询所有员工,及其档案详情
- [torch]creat a new layer
- EBS并发请求生成trace及分析
- zookeeper选举原理
- severletContext读取WEB工程下的文件
- [leetcode] 83. Remove Duplicates from Sorted List