MyBatis面试题系列三

1、#{}${}的区别是什么?
#{}是预编译处理,${}是字符串替换。
Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的
set 方法来赋值;
Mybatis 在处理${}时,就是把${}替换成变量的值。
使用#{}可以有效的防止 SQL注入,提高系统安全性。
2、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
第 1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类
的属性名一致。

<select id=”selectorder” parametertype=”int” resultetype=”
 me.gacl.domain.order”>
 select order_id id,order_no orderno,order_price price from
 orders where order_id=#{id};
 </select>

第2种:通过<resultMap>来映射字段名和实体类属性名的一一对应的关系。

<select id="getOrder" parameterType="int" 
 resultMap="orderresultmap">
 select * from orders where order_id=#{id}
 </select>
 <resultMap type=”me.gacl.domain.order” id=”orderresultmap”>
 <!–用id属性来映射主键字段–>
 <id property=”id”  column=”order_id”>
 <!–用result属性来映射非主键字段,property为实体类属性名,column
为数据表中的属性–>
 <result property=“orderno” column=”order_no”/>
 <result property=”price” column=”order_price”/>
 </reslutMap>

3、模糊查询like语句该怎么写?
第1种:在Java代码中添加sql通配符。

string wildcardname=“%smi%”;
 list<name> names=mapper.selectlike(wildcardname);
<select id=”selectlike”>
 select * from foo where bar like #{value}
 </select>

第 2种:在sql语句中拼接通配符,会引起sql注入


string wildcardname = “smi”;
 list<name> names = mapper.selectlike(wildcardname);
 <select id=”selectlike”>
 select * from foo where bar like "%"#{value}"%"
 </select>

阿里云“99计划”,新老同享,低价长效,助力开发者普惠上云!


相关推荐

  1. MyBatis面试系列

    2024-06-10 22:54:03       9 阅读
  2. 面试mybatis

    2024-06-10 22:54:03       33 阅读
  3. Mybatis面试系列

    2024-06-10 22:54:03       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 22:54:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 22:54:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 22:54:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 22:54:03       18 阅读

热门阅读

  1. 高温应用中理想的油封材料选择

    2024-06-10 22:54:03       8 阅读
  2. Android基础-HIDL详述

    2024-06-10 22:54:03       9 阅读
  3. .net后端程序发布到nignx上,通过nginx访问

    2024-06-10 22:54:03       9 阅读
  4. 7、Spring之Bean生命周期~初始化

    2024-06-10 22:54:03       8 阅读
  5. Spring 冷知识:利用 @Profile 实现 AOP 的预先配置

    2024-06-10 22:54:03       11 阅读
  6. 京东一面测开(KPI)

    2024-06-10 22:54:03       10 阅读
  7. 构建高效爬虫系统:设计思路与案例分析

    2024-06-10 22:54:03       10 阅读
  8. 速览三版HTTP的改进策略

    2024-06-10 22:54:03       7 阅读
  9. 困难 Leetcode 312. 戳气球 区间dp/记忆化搜索

    2024-06-10 22:54:03       8 阅读
  10. 力扣22. 括号生成

    2024-06-10 22:54:03       10 阅读
  11. Leetcode 3177. Find the Maximum Length of a Good Subsequence II

    2024-06-10 22:54:03       15 阅读
  12. 力扣1234.替换子串得到平衡字符串

    2024-06-10 22:54:03       7 阅读
  13. C# —— 二维数组

    2024-06-10 22:54:03       8 阅读
  14. c++外部模板

    2024-06-10 22:54:03       9 阅读