mybatis——mybatis-config.xml配置文件

在这里插入图片描述
脑图

一.properties属性的用法

  • 用来加载配置文件,在后面可以使用 ${配置文件中某个键}即可获得对应键的值
  • 如:${jdbc.driver} 可以获得配置文件中的com.mysql.jdbc.Driver

优先级:(注意:这是一个容易错的点)

  • 1.先执行<property name="username" value="xx"/>username=xx
  • 2.再执行db.properties里面的username=root得 username=root
  • 3.实体类中有username属性,测试类中调用user.setName(“张三”);得 username=张三
    测试时若没有输入user.setName(“张三”);最后执行就会出错,因为这时username=root
  • 4.总结:不要使用相同的名字,例如

1.db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybase1
jdbc.username=root
//username=root
jdbc.password=root123

2.UserMapper.xml

<?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>
	<!-- 
		url:用来加载网络上或者磁盘上的一个配置文件,url="c://xx/properties" 
		resource:可以加载外部的配置文件,resource="db.properties"	
	 -->
	<properties resource="db.properties">
		<!-- <property name="username" value="xx"/> -->
	</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}"/> 
				<!-- <property name="username" value="${username}"/> -->
			</dataSource>
		</environment>
	</environments>	
	<mappers>
		<mapper resource="UserMapper.xml"/>
	</mappers>
</configuration>

二.settings全局配置参数的用法

  • cacheEnabled:缓存
    (true | false) 默认为true[支持缓存]
  • lazyLoadingEnabled:懒加载
    (true | false) 默认为true[支持懒加载]
  • useGeneratedKeys:主键生成策略
    (true | false) 默认为false
  • defaultExecutorType:默认的执行器类型
    (REUSE BATCH SIMPLE) 默认为SIMPLE
  • defaultStatementTimeout:默认statement超时
    (Any positive integer) 默认为Not Set (null)
  • jdbcTypeForNull:Jdbc类型映射
    JdbcType enumeration.Most common are: NULL,VARCHAR and OTHER 默认为OTHER
  • proxyFactory:代理工厂
    (CGLIB | JAVASSIST[mybatis包提供的代理机制]) 默认为CGLIB
<!-- 可以在mybatis-config.xml里面进行如下配置,一般可以不配置,默认的配置已经够用了 -->
<settings>
 <setting name="cacheEnabled" value="true"/>
 <setting name="lazyLoadingEnabled" 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="25"/>
 <setting name="safeRowBoundsEnabled" value="false"/>
 <setting name="mapUnderscoreToCamelCase" value="false"/>
 <setting name="localCacheScope" value="SESSION"/>
 <setting name="jdbcTypeForNull" value="OTHER"/>
 <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

三.typeAliases类型别名的用法

最好不用,因为不能见名知意,还是在UserMapper使用包名+类名来配置
对单个的pojo类起一个别名

<!-- 
	可以在mybatis-config.xml里面进行如下配置,
	将com.jp.pojo.User类型起一个别名u 
-->
<typeAliases>
	<typeAlias type="com.jp.pojo.User" alias="u"/>
</typeAliases>

<!-- 
	可以在UserMapper.xml里面 
	resultType="com.jp.pojo.User" 就可以写成 resultType="u"  
-->
<select id="getUserById" resultType="u" parameterType="int">
	select id,username as name,sex,address,birthday from user1 where id = #{id}
</select>

对多个的pojo类起一个别名

<typeAliases>
	<!-- 
		扫描指定的包,为该包下所有的类起别名
				     别名为类的字母小写或者类名本身
				     假设com.jp.pojo里面有一个User类,则会为它起别名为User或user
	-->
	<package name="com.jp.pojo"/>
</typeAliases>
<!-- 
	可以在UserMapper.xml里面 
	resultType="com.jp.pojo.User" 就可以写成 resultType="user"或者resultType="User"  
-->
<select id="getUserById" resultType="User" parameterType="int">
	select id,username as name,sex,address,birthday from user1 where id = #{id}
</select>

mybatis内置的别名

_byte byte   _long long   _short short   _int int   _integer int   _double double
_float float   _boolean boolean   string String   byte Byte   long Long   short Short
int Integer   integer Integer   double Double   float Float   boolean Boolean   date Date
decimal BigDecimal   bigdecimal BigDecimal   object Object   map Map   hashmap HashMap
list List   arraylist ArrayList  collection Collection  iterator Iterator

四.typeHandler类型处理器的用法

例如StringTypeHandler,使用占位符#{sex},会将javajava.lang.String类型和mysq里面charvarchar类型进行了对应匹配

五.Mappers加载sql配置文件

1.接口与sql的xml文件不在同一个包下

<mappers>
	<!-- 
		resource里面为sql配置文件的名称,一般是xxMapper.xml的形式
		用来加载自己写的一个写sql语句的xml配置文件 
	-->
	<mapper resource="User.xml"/>
	<mapper resource="UserMapper.xml"/>
</mappers>

2.接口与sql的xml文件在同一个包下

<mappers>
	<!-- 
		class里面为UserMapper接口类的全限定名
		注意:必须接口和sql配置文件同名,并且在同一个包下
	-->
	<mapper class="com.jp.mapper.UserMapper"/>
</mappers>

:如果接口与sql的xml文件不在同一个包下,会报下列异常,找不到UserMapper.getUserById
因为Mybatis会拿着getUserById方法去UserMapper.xml文件找与getUserById同名的id
但是由于接口与sql的xml文件不在同一个包下就找不到
在这里插入图片描述
3.接口与sql的xml文件在同一个包下,并且需要配置多个接口

<mappers>
	<!-- 
		必须接口和sql配置文件同名,并且在同一个包下
		mapper.java和mapper.xml文件同名,并且在同一个包下
	-->
	<mapper class="com.jp.mapper"/>
</mappers>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值