mybatis配置
来源:互联网 发布:vb 判断文件是否存在 编辑:程序博客网 时间:2024/06/05 07:52
mybatis是优秀的数据库持久化框架,这里介绍它在configuration下的基本配置。
一、配置
1、properties ( 属性定义)
用于加载配置文件,同时也可以在内部定义属性,当时两者中有属性相同时,则配置文件中的优先级更好,
另外,如果在方法中传了属性,则方法中的属性优先级最高:
如
<properties resource="properties/env.properties"> <property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/></properties>2、settings (运行参数设置)
用于设置mybatis在运行中的各种参数,这里介绍几种常用的:
a) mapUnderscoreToCamelCase ,值可为true或false,默认值为false, 用于设置在mysql字段(下划线模式)与java字段(驼峰模式)的自动映射;
b)useActualParamName ,值可为true或false,默认值为false, 允许自动生成主键,若开启,则调用后java实例内有会用自动生成的值;
c)lazyLoadingEnabled ,值可为true或false,默认值为false, 设置关联对象延迟加载;
d)aggressiveLazyLoading,值可为true或false,默认值为false, 设置对象内属性是否按需加载;、
如
<settings> <setting name="lazyLoadingEnabled" value="true" /> <setting name="aggressiveLazyLoading" value="false" /> <setting name="mapUnderscoreToCamelCase" value="true"/> <setting name="useGeneratedKeys" value="true" /></settings>
3、typeAliases (bean别名定义)
用于设置java对象的别名,设置方式有:
a)使用typeAlias对每个对象单独设置;
b)使用package对整个包设置,默认bean对应的别名是首字母小写,如果在bean定义时使用了@Alias作别名设置,如@Alias("stu"),则使用alise定义的别名。
如:
<typeAliases> <typeAlias type="bean.Stu" alias="stu" /> <package name="bean" /></typeAliases>
4、typeHandlers (类型处理器)
用于设置mysql字段到java自定义类型的转换,如可用于枚举类型的转换,使用方式是继承BaseTypeHandler方法,
实现内部定义的四个抽象方法,同时可在实现类上加上mysql字段类型(@MappedJdbcTypes)与java自定义类型(@MappedTypes)映射的注解。
最后将定义好的typeHandler加到typeHandlers属性,加入方式有两种:
a)使用typeHandler对每个单个类型处理器注册;
b)使用package对整个包设置;
类型处理器定义如
@MappedTypes(GenderType.class)@MappedJdbcTypes({JdbcType.INTEGER,JdbcType.BIGINT,JdbcType.SMALLINT})public class GenderTypeHandler extends BaseTypeHandler<GenderType> { @Override public void setNonNullParameter(PreparedStatement ps, int i, GenderType parameter, JdbcType jdbcType) throws SQLException { ps.setInt(i,null==parameter ? null : parameter.getId()); } @Override public GenderType getNullableResult(ResultSet rs, String columnName) throws SQLException { return GenderType.getInstance(rs.getInt(columnName)); } @Override public GenderType getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return GenderType.getInstance(rs.getInt(columnIndex)); } @Override public GenderType getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return GenderType.getInstance(cs.getInt(columnIndex)); }}类型处理器注册如
<typeHandlers> <typeHandler handler="typeHandler.GenderTypeHandler" /> <package name="typeHandler" /></typeHandlers>5、objectFactory (对象工厂,略,后面单独介绍)
6、plugins(插件,略,后面单独介绍)
7、environments (数据库运行环境)
用于设置数据库运行环境,包括:
a)使用default定义默认的数据源
b)transactionManager 事务处理器,类型有JDBC(使用JDBC进行事务的提交和回滚)和MANAGE(事务的处理交给所在容器处理,自已不处理);
c)dataSource中定义数据库地址、用户名、密码等,类型有UNPOOLED(每次请示单独打一个连接,处理完后关系)、
POOLED(使用类似于线程池的处理方式,打开多个连接复用)、JNDI(可在外部设置数据源);
如
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <property name="driver.encoding" value="utf-8" /> </dataSource> </environment></environments>8、mappers (sql映射文件,即映射器)
用于注册定义好的sql文件,方式有:
a)使用resource进行类路径下的sql文件注册;
b)使用url进行文件路径下的sql文件注册;
c)使用class进行sql定义对应类的注册;
c)使用package进行sql定义对应类包的批量注册;
如
<mappers> <mapper resource="mapper/StuMapper.xml"/> <mapper url="file:///E:/mybatisDemo/src/main/resources/mapper/StuMapper.xml" /> <mapper class="mapper.StuMapper"/> <package name="mapper" /></mappers>
二、实例
1、添加maven依赖
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.4</version></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version></dependency><dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version></dependency><dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.6</version></dependency><!-- 分页使用--><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.0.3</version></dependency>
2、代码实例
完整xml形式的configuration设置:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <properties resource="properties/env.properties"> <property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/> </properties> <settings> <setting name="lazyLoadingEnabled" value="true" /> <setting name="aggressiveLazyLoading" value="false" /> <setting name="mapUnderscoreToCamelCase" value="true"/> <setting name="useGeneratedKeys" value="true" /> </settings> <typeAliases> <package name="bean" /> </typeAliases> <typeHandlers> <package name="typeHandler" /> </typeHandlers> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql" /> <!-- 该参数默认为false --> <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 --> <!-- 和startPage中的pageNum效果一样--> <property name="offsetAsPageNum" value="true" /> <!-- 该参数默认为false --> <!-- 设置为true时,使用RowBounds分页会进行count查询 --> <property name="rowBoundsWithCount" value="true" /> </plugin> </plugins> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <property name="driver.encoding" value="utf-8" /> </dataSource> </environment> </environments> <mappers> <package name="mapper" /> </mappers></configuration>main方法调用及完整java形式的configuration设置:
public class MybatisMain { public static void main(String[] args) throws Exception { SqlSessionFactory factory = getSqlSessionFactoryFromXml(); //xml方式读取配置// SqlSessionFactory factory = getSqlSessionFactoryFromJava(); //java方式读取配置 SqlSession session = factory.openSession(ExecutorType.REUSE,true); StuMapper stuMapper = session.getMapper(StuMapper.class); Stu stu = stuMapper.selectStu(1); System.out.println(stu.getName()); session.close(); } static SqlSessionFactory getSqlSessionFactoryFromXml() throws Exception { InputStream inputStream = Resources.getResourceAsStream("mybatis-config-paper.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); return factory; } static SqlSessionFactory getSqlSessionFactoryFromJava() throws Exception { BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/school"); dataSource.setUsername("admin"); dataSource.setPassword("123456"); dataSource.setInitialSize(5); dataSource.setMaxActive(10); dataSource.setMaxIdle(3); dataSource.setMaxWait(10000); TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment env = new Environment("default",transactionFactory,dataSource); Configuration config = new Configuration(env); config.setMapUnderscoreToCamelCase(true); config.setUseGeneratedKeys(true); config.setLazyLoadingEnabled(true); config.setAggressiveLazyLoading(true); config.getTypeAliasRegistry().registerAliases("bean"); config.getTypeHandlerRegistry().register("typeHandler"); config.addInterceptor(new PageHelper()); config.addMappers("mapper"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); return factory; }}
- mybatis配置
- mybatis 配置
- mybatis配置
- mybatis配置
- mybatis----配置
- Mybatis配置
- mybatis配置
- mybatis配置
- mybatis配置
- mybatis配置
- mybatis 配置
- mybatis配置
- myBatis配置
- myBatis配置
- mybatis配置
- mybatis配置
- MyBatis配置
- mybatis配置
- unity UGUI 2048 控制移动
- 队列求迷宫问题
- jdk之BitSet位运算解析
- 嵌入式实训总结
- bzoj1803: Spoj1487 Query on a tree III
- mybatis配置
- JavaSE重新学习
- 13.折半法(二分法)判断该数是否存在于数组
- PyQt5+python3+pycharm开发环境配置
- nginx源码学习(二)ngx_init_cycle(&init_cycle)函数解析
- 期末总结
- 获取form内iframe中的textarea(kindeditor)的值
- caffe 网络结构参数介绍及可视化
- volatile关键字