Mybatis框架----查询

查询所有数据

步骤

  1. 编写接口方法:Mapper接口

         是否有参数:无

         结果:List<Brand>(返回的是List集合)

   2.编写SQL语句:sql映射文件

   3.执行方法,测试

Mybatis完成操作需要几步

三步:编写接口方法----编写sql语句-----执行方法

注意:数据库表的字段名称必须和实体类中的属性名不一致,不能自动封装数据

无法自动封装时需要手动封装

  1. 给数据库表中的字段名起别名,让跟实体类不一致的字段名一致(缺点:每次查询都需要定义一次别名)
  2. 导入sql片段(也有缺点)
  <sql id="user">
        id,username,password,gender,addr
    </sql>
    <select id="selectById" resultType="user">
        select <include refid="user"/> from tb_user where id=#{id};
    </select>

3.使用resultMap(完成数据库字段名和实体类中的属性名不一致的情况)

    定义resultMap标签

   在<select>标签中 resultMap属性替换resultType属性

注意:在上面只需要定义 字段名 和 属性名 不一样的映射,而一样的则不需要专门定义出来。

实体类属性名 和 数据库表列名 不一致,不能自动封装数据

  • ==起别名:==在SQL语句中,对不一样的列名起别名,别名和实体类属性名一样

    • 可以定义 <sql>片段,提升复用性

  • ==resultMap:==定义<resultMap> 完成不一致的属性名和列名的映射

<!--id:唯一标识
    type:映射类型-->
    <resultMap id="userResultMap" type="user">
        <!--两个标签
        id:主键字段的映射
        result:其他字段的映射
        -->
        <!--column:表的列名 property:实体类的属性名-->
        <result column="" property="">

    </resultMap>

    <select id="selectAll" resultMap="userResultMap">
        select * from tb_user;
    </select>

查询--查看详情

步骤

1.编写接口方法:Mapper接口

        参数:id

        结果:user对象

2.编写sql语句,sql映射文件

3.执行方法,测试

参数占位符

查询到的结果很好理解就是id为1的这行数据。而这里我们需要看控制台显示的SQL语句,能看到使用?进行占位。说明我们在映射配置文件中的写的 #{id} 最终会被?进行占位。接下来我们就聊聊映射配置文件中的参数占位符。

mybatis提供了两种参数占位符:

  • #{} :执行SQL时,会将 #{} 占位符替换为?,将来自动设置参数值。从上述例子可以看出使用#{} 底层使用的是 PreparedStatement

  • ${} :拼接SQL。底层使用的是 Statement,会存在SQL注入问题。如下图将 映射配置文件中的 #{} 替换成 ${} 来看效果

<select id="selectById"  resultMap="brandResultMap">
    select *
    from tb_brand where id = ${id};
</select>
SQL语句中特殊字段处理

以后肯定会在SQL语句中写一下特殊字符,比如某一个字段大于某个值,如下图

可以看出报错了,因为映射配置文件是xml类型的问题,而 > < 等这些字符在xml中有特殊含义,所以此时我们需要将这些符号进行转义,可以使用以下两种方式进行转义

  • 转义字符

    下图的 &lt; 就是 < 的转义字符。

  • <![CDATA[内容]]>

​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值