MyBatis入门(三)

123 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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>