1、核心配置文件的介绍
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--引入properties文件,此后可以在当前文件使用${key}的方式访问value-->
<properties resource="jdbc.properties"/>
<!--
environments:配置连接数据库的环境
属性:
default:设置默认使用的环境的 id
-->
<environments default="development">
<!--
environment:设置一个具体的连接数据库的环境
属性:
id:设置环境的唯一标识,不能重复
-->
<environment id="development">
<!--
transactionManager:设置事务管理器
属性:
type:设置事务管理的方式
type="JDBC | MANAGED"
JDBC:表示使用JDBC中原生的事务管理方式
MANAGED:被其他的...所管理
-->
<transactionManager type="JDBC"/>
<!--
dataSource:设置数据源
属性:
type:设置数据源的类型
type = "POOLED | UNPOOLED | JNDI"
POOLED:表示使用数据库连接池
UNPOOLED:表示不使用数据库连接池
JNDI:表示使用上下文中的数据源
-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.Driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 引入mybatis的映射文件 -->
<!--
以文件的方式引入(麻烦):<mapper resource="mappers/UserMapper.xml"/>
以文件包的方式引入(简单):<package name="com.wkl.mybatis.mapper"/>
**重要**
1、mapper接口和映射文件所在的包名必须一致
+ resources 下的文件包名 一定要与 表对赢得的接口名所在的包名一摸一样
接口:com.wkl.mybatis.mapper包下的接口
文件:com.wkl.mybatis.mapper包下的文件(这个包是自己创建的)
一个文件对应一个接口 ===> 相当于 用 xml 文件充当了接口的实现类
2、mapper接口的名字和映射文件的名字必须一致
接口名:UserMapper
文件名:UserMapper
-->
<mappers>
<!-- <mapper resource="mappers/UserMapper.xml"/>-->
<package name="com.wkl.mybatis.mapper"/>
</mappers>
</configuration>
2、动态sql赋值
mybatis获取参数值的方式有两种:#{} 和 ${}
-
本质
-
#{} : 本质是占位符赋值
-
${} : 本质是字符串拼接
-
-
mapper接口方法的参数值为单个的字面量类型(不是变量类型)
此时可以通过#{} 和 ${},{}内填充任意内容获取参数,但是,建议使用参数名
<!-- User selectUserByAccount(int account);-->
<select id="selectUserByAccount" resultType="cn.wkl.mybatis.pojo.User">
select * from user where account = #{account};
</select>
-
mapper接口方法的参数值为多个的字面量类型(不是变量类型)
此时Mybatis会将参数放在map集合中,以两种方式储存数据
1)以 arg0 , arg1 , arg2 , . . . 为键,以参数为值
2)以param1 , param2 , param3 , . . . 为键 , 以参数为值
因此:只需通过 #{} ${} 访问map集合的键,就可以获取相应的参数值
<!--int insertUser(int account,int password);-->
<insert id="insertUser">
<!--param1 ===> account \ param2 ===> password-->
insert into user values (null,#{param1},#{param2});
</insert>
(推荐)若mapper接口方法的参数为实体类类型的参数
只需通过#{} ${} 访问实体类中的属性名,就可以获取到相应的属性值(一定要有get、set方法的属性),一定要注意${}的单引号问题
<!--int insertUserByUserClass(User user);-->
<insert id="insertUserByUserClass">
<!--这里的#{}里面直接输入的就是User类的属性名(值)-->
insert into user values (null,#{account},#{password});
</insert>
(推荐)使用注解改变map的键的名字,在xml页面使用改变后的键的名字
<!--User selectUserByParam(@Param("account") int acount,@Param("password") int password);-->
<select id="selectUserByParam" resultType="cn.wkl.mybatis.pojo.User">
select * from user where account = #{account} and password = #{password};
</select>

博客介绍了MyBatis核心配置文件,重点讲解动态SQL赋值。MyBatis获取参数值有#{}和${}两种方式,前者是占位符赋值,后者是字符串拼接。针对不同类型的参数值,如单个或多个字面量类型、实体类类型等,说明了获取参数值的方法及注意事项。
3310





