Mybatis配置文件详解
配置文件备份: 不要随意更改重要配置,以防丢失 #生活技巧# #数码产品使用技巧# #游戏设备优化设置#
Properties(属性)Java属性文件可以配置直观的。
如:
<properties> <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="jdbc.url" value="jdbc:mysql:///mybatis"/> <property name="jdbc.username" value="root"/> <property name="jdbc.password" value="root"/> </properties> 1234567
或者通过直接引入属性文件,例如:
<properties resource="db.properties"></properties>1
然后db.properties文件中的配置就是:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///mybatis jdbc.username=root jdbc.password=root 12345
值得一提的是:上面resource属性默认是加载类路径下的db.perperties属性文件
要用到这些属性的时候,就如下面一样:
<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> 1234567
如果一个属性在多个地方出现,那Mybatis将按一下的顺序加载:
(1)属性文件中的属性项首先被读取
(2)在类路径或URL资源中读取的属性项第二顺序加载,并且可以覆盖第一顺序加载的值
(3)在方法体中给定的参数值最好加载,但是以后覆盖上述两种加载的值。
也就是说,最高级别的属性值是方法体中设定的参数值,接下来是类路径和URL,最后才是 属性文件
2.settings(设置)
例如:
<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25000"/> </settings> 123456789101112
3.typeAliases(类型别名)
类型别名是Java类型的简称。
逐个设置,例如:
<typeAliases> <typeAlias type="com.yan.po.User" alias="user"/> </typeAliases> 1234
整个包设置,例如:
<typeAliases> <package name="com.yan.po"/> </typeAliases> 1234
然后,咱们要注意的是,Mybatis已经给咱们默认设置好常用类型的别名,如下表:
4.typeHandlers(类型句柄)
当mybatis 对 PreparedStatement设入一个参数或者是从ResultSet 返回一个值的时候,类型句柄被用将值转为相匹配的JAVA类型。这下表格描述了默认的类型句柄。
你可以重写类型句柄或者是创建你自己的方式来处理不支持或者是非标准的类型。只需要简单地实现org.mybaits.type包里的TypeHandler,并且映射到一个JAVA类型,然后再选定一个JDBC类型。
例如:
<typeHandlers> <typeHandler handler="com.yan.typeHandler.TestTypeHandler"/> </typeHandlers> 1234
然后自己写了一个类型:
package com.yan.typeHandler; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.TypeHandler; public class TestTypeHandler<T> implements TypeHandler<T> { public void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException { // TODO Auto-generated method stub ps.setString(i, (String) parameter); } public T getResult(ResultSet rs, String columnName) throws SQLException { // TODO Auto-generated method stub return null; } public T getResult(ResultSet rs, int columnIndex) throws SQLException { // TODO Auto-generated method stub return null; } public T getResult(CallableStatement cs, int columnIndex) throws SQLException { // TODO Auto-generated method stub return null; } }
12345678910111213141516171819202122232425262728293031323334353637然后,想怎么改类型,就怎么改,就是这么的任性。
比如,我想让某个返回值用到这个类型,例如:
<resultMap type="" id="" > <result column="" property="" typeHandler="com.yan.typeHandler.TestTypeHandler"/> </resultMap> 1234
现在,你们应该知道怎么用这玩意了吧 ,没错,其实这玩意儿就是这么的简单。
5.ObjectFactory(对象工厂)
每次Mybatis为结果对象创建一个新实例,都会用到ObjectFactory。默认的ObjectFactory与使用目标类的构造函数创建一个实例毫无区别,如果有已经映射的参数,那也可能使用带参数的构造函数。如果你重写ObjectFactory的默认操作,你就可以创建你自己的对象。例如:
SqlMapConfig.xml中配置是:
<ObjectFactory type="com.yan.objectFactory.TestObjectFactory"> <property name="" value=""/> </ObjectFactory> 1234
重写的ObjectFactory 代码:
package com.yan.objectFactory; import java.util.List; import java.util.Properties; import org.apache.ibatis.reflection.factory.DefaultObjectFactory; import com.yan.po.User; public class TestObjectFactory extends DefaultObjectFactory { public Object create(Class type){ return super.create(type); } public Object create(Class type,List<Class<T>> constructorArgTypes,List<Object> constructorArgs){ return super.create(type, constructorArgTypes, constructorArgs); } public void setProperties(Properties properties){ super.setProperties(properties); } }
1234567891011121314151617181920212223242526276.Plugins (插件)
啥都先别说,来个例子你就明白了:
sqlMapConfig.xml中配置:
<!-- 配置分页插件 --> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库--> <property name="dialect" value="mysql"/> </plugin> </plugins> 12345678
就是这么简单,这么好用。
7.Environment (环境)
MyBatis可以配置多个环境。这可以帮助你SQL映射对应多种数据库等。
比如说,你想为开发、测试、发布产品配置不同的环境。等等。
不过,值得咱们注意的是:虽然你可以配置多重环境,但是你只可以选择一对一的SqlsessionFactory实例。
例如: 用environment 的id属性来标识,然后environments 的default指定
<environments default="development2"> <environment id="development1"> <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> <environment id="development2"> <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>
1234567891011121314151617181920218.Mappers (映射器)
用过Mabatis的朋友们都知道这个,这个标签有两个用法,都是用来映射代理mapper.xml文件使用的。
第一个用法:逐个映射,
例如:
<mappers> <mapper resource="UserMapper.xml"/> </mappers> 1234
第二个用法:包名映射,其包下的mapper.xml文件都被注册
例如:
<mappers> <package name="com.yan.mapper"/> </mappers> 1234
最后,在这里祝大家学习愉快,家庭幸福美满
网址:Mybatis配置文件详解 https://www.yuejiaxmz.com/news/view/479344
相关内容
【Mybatis】Result type doesn‘t match for Select id=“xxx“Mybatis
MyBatis 声明JdbcType. 如#{name,jdbcType=VARCHAR}
【Mybatis】No enum constant org.apache.ibatis.type.JdbcType.LONG
基于SpringBoot+Vue+uniapp的个性化美食推荐系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的大学校园旧物捐赠网站的详细设计和实现(源码+lw+部署文档+讲解等)
Intellij如何去掉mybatis Mapper.xml背景色
基于java+springboot+vue的二手旧物置换网站(源码+LW+部署讲解)
mybatis resultmap映射结果集(xml映射配置一)
橱柜有哪些五金配件 橱柜五金配件知识详解