一、基础知识

mybatis 规定 mapper.xml 中每一个 SQL 语句形式上只能有一个 @parameterType 和一个 @resultType

1)返回值是一个对象的集合,@resultType 中只能写该对象的类型,而不是写 List<T>

2)输入参数可以用 #{} 和 ${} 两种取值方法,两者区别与联系:

① 当传入类型为 JDBC 基本类型(8种java基本类型+String)时,#{} 里面可以写成任意值,${} 里面必须写 value  
② 当传入类型为对象时,两种方式里面都应该写成类中属性名
③ #{} 方式传值会将传入的值当做一个字符串处理,会自动将其加入"",而 ${} 方式则不会  
④ #{} 方式能够有效防止 SQL 注入,而 ${} 不会,因此能够用 #{} 就不要用 ${}
⑤ ${} 的适用场景是利用数据库中的字段动态排序等例如想要根据id排序  
  如果用 #{} 传入 id,SQL 语句会变成 order by "id" 这样的 SQL 语句不能排序,  
  因此只能用 ${} ,对应的 SQL 语句是 order by id 符合要求

二、输入映射 - parameterType、parameterMap(已废弃)

1)基本类型 - 当输入参数为JDBC基本类型,则可以直接用#{xxx}或者${value}取值

<select id="selectUserById" parameterType="int" resultType="com.sikiedu.beans.User">
    SELECT * FROM user WHERE id = #{id}
</select>

2)自定义对象 - 当输入参数为对象时,MyBatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo的属性名称

<insert id="insertUser" parameterType="com.sikiedu.beans.User">
    INSERT INTO user VALUES(null,#{username},#{userpassword},#{balance},#{grgisterdate})
</insert>

<update id="updateUser" parameterType="com.sikiedu.beans.User">
    UPDATE user SET username = #{username} WHERE id = #{id}
</update>

3)自定义包装类 - 开发中通过pojo传递查询条件,查询条件是综合的查询条件,不仅包括用户查询条件还包括其它的查询条件,这时可以使用包装对象传递输入参数。即一个pojo类的属性是另一个pojo类对象。

Vo包装类:

MyBatis - 输入和输出参数
 1 package com.sikiedu.beans;
 2 
 3 import java.util.List;
 4 
 5 public class UserVo extends User {
 6     // 维护一个Role集合
 7     private List<Role> roleList;
 8 
 9     public List<Role> getRole() {
10         return roleList;
11     }
12 
13     public void setRole(List<Role> roleList) {
14         this.roleList = roleList;
15     }
16 
17     @Override
18     public String toString() {
19         return "UserVo [ID=" + getId() + "\t username=" + getUsername() + "\t Grgisterdate=" + getGrgisterdate()
20                 + "\t role=" + roleList + "]";
21     }
22 
23 }
UserVo.java

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2021-09-07
  • 2021-08-14
猜你喜欢
  • 2022-12-23
  • 2021-09-04
  • 2021-11-30
  • 2022-12-23
  • 2021-08-05
  • 2021-06-19
  • 2022-12-23
相关资源
相似解决方案