MyBatis的学习

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

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>

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值