MyBatis——占位符(#{}和${}的理解,实体符号在mapper文件的的表示,模糊查询(like)

1.占位符#{}和${}的对比

MyBatis处理#{}使用jdbc对象是PrepareStatement对象

#{}占位符的特点:1)使用的PrepareStatement对象,执行sql语句,效率高

                              2)使用的PrepareStatement对象,能够避免sql注入,sql语句更加安全。

                               3)#{}常常作为列值使用,位于等号的右侧,#{}位置的值和数据类型有关。

${}占位符的特点:1)使用Statement对象,执行sql语句,效率低

                              2)${}占位符的值,使用的字符串连接方式,有sql注入的风险,有代码安全问题

                              3)${}数据是原样使用的,不会区分数据类型。

                              4)${}常用作表名或者列名,在能够保证数据安全的情况下使用${}

 

 2.实体符号在mapper文件的的表示

在mapper文件中,大于(>)、小于(<)、大于等于(>=)、小于等于(<=)等符号最好将其转换成为实体符号,否则在xml文件中可能会出现解析错误问题。特别是小于(<),在xml文件中是绝对不能出现的。下面是实体符号表:

 

3.模糊查询

关于模糊查询主要是like方式查询模糊的数据。下面是like的两种查询方式代码中有标注

实体接口(StudentDao接口):

//    like的两种方式,第一种方法
    List<Student> selectlikeone(@Param("name") String name);
    //like的第二种方法
    List<Student> selectliketwo(@Param("name") String name);

mapper文件(StudentDao.xml):

<!--    模糊查询 like的第一种方式-->
    <select id="selectlikeone" resultType="com.liuhaiyang.domain.Student">
        select * from student where  name like #{name}
    </select>
<!--    like的第二种方式-->
    <select id="selectliketwo" resultType="com.liuhaiyang.domain.Student">
        select * from student where  name like "%" #{name} "%"
    </select>

测试类(Test):

@Test//like的第一种方式
    public void likeone(){
        SqlSession session =MybatisUtils.getSqlSession();
        StudentDao dao=session.getMapper(StudentDao.class);
        List<Student> ls= dao.selectlikeone("%刘%");
        ls.forEach(stu-> System.out.println(stu));
        session.close();
    }
    @Test //like的第二种方式
    public void liketwo(){
        SqlSession session =MybatisUtils.getSqlSession();
        StudentDao dao=session.getMapper(StudentDao.class);
        List<Student> ls= dao.selectliketwo("刘");
        ls.forEach(stu-> System.out.println(stu));
        session.close();
    }

like的第一种方式结果截图

like的第二种方式结果截图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值