一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情。
MyBatis核心配置文件
核心配置文件中的标签必须按照固定的顺序:
properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorF actory?,plugins?,environments?,databaseIdProvider?,mappers?
<?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:引入properties文件·-->
<properties resource="jdbc.properties "/>
<!--设置类型别名,不区分大小写
alias="User"指定别名,也可以不设置,默认就是类名切不区分大小写
若设置此属性,此时该类型的别名只能使用alias所设置的值
-->
<typeAliases>
<typeAlias type="com.yzh.mybatis.User" alias="User"></typeAlias>
<!-- 以包为单位,将包下所有的类型设置默认的类型别名,即类名且不区分大小写 -->
<!-- <package name="com.yzh.mybatis"/>-->
</typeAliases>
<!--
environments:配置多个连接数据库的环境
属性:
default:设置默认使用的环境id
-->
<environments default="development">
<!-- environment:配置某个具体的环境
属性:
id:表示连接数据库环境的唯一标识,不能重复
-->
<environment id="development">
<!--
transactionManager :设置事务管理方式
属性:
type="JDBC/MANAGED"
JDBC表示当前环境中,执行sql时,使用的事jdbc原生的事务管理方式,提交或回滚需要手动提交
MANAGED:表示被管理,例如Spring
-->
<transactionManager type="JDBC"/>
<!-- dataSource数据源
属性:
type:设置数据源的类型,type="POOLED|UNPOOLED|JNDI"
type="POOLED":使用数据库连接池,即会将创建的连接进行缓存,下次使用可以从
缓存中直接获取,不需要重新创建
type="UNPOOLED":不使用数据库连接池,即每次使用连接都需要重新创建
type="JNDI":调用上下文中的数据源
-->
<!-- <dataSource type="POOLED">-->
<!-- <property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!-- <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>-->
<!-- <property name="username" value="root"/>-->
<!-- <property name="password" value="root"/>-->
<!-- </dataSource>-->
<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>
<!-- 引入映射文件-->
<mappers>
<!-- <mapper resource="mapper/UserMapper.xml"/>-->
<!--
以包为单位,将包下所有的映射文件引入核心配置文件
在resource文件下不能直接创立com.yzh.mapper,中间要以/来分隔不能是.
注意:此方式必须保证mapper接口和mapper映射文件必须在相同的包下
mapper接口要和映射文件的名字一致
-->
<package name="com.yzh.mapper"/>
</mappers>
</configuration>
MyBatis获取参数值的两种方式(重点)
MyBatis获取参数值的两种方式: ${}和#{}
${}的本质就是字符串拼接,#{}的本质就是占位符赋值
${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引 号;
但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自 动添加单引号
#{}方式
Mybatis会在运行过程中,把配置文件中的SQL语句里面的#{}转换为“?”占位符,发送给数据库执行。
配置文件中的SQL:
<delete id="deleteEmployeeById">
delete from t_emp where emp_id=#{empId}
</delete>
实际执行的SQL:
delete from t_emp where emp_id=?
${}方式
将来会根据${}拼字符串
SQL语句
<select id="selectEmployeeByName" resultType="com.atguigu.mybatis.entity.Employee">
select emp_id empId,emp_name empName,emp_salary empSalary from t_emp where emp_name like '%${empName}%'
</select>