当前位置: 首页 > news >正文

Mybatis总结--传参二

 #叫做占位符

Mybatis是封装的JDBC 增强版 内部还是用的jdbc

每遇到一个#号 这里就会变为?占位符

一个#{}就是对应一个问号 一个占位符

       用这个对象执行sql语句没有sql注入的风险 

八、多个参数-使用@Param

        当 Dao 接口方法有多个参数,需要通过名称使用参数:
                在方法形参前面加入@Param(“自定义参数名 ”)
                mapper 文件使用#{自定义参数名}

8.1、sql映射文件,StudentDao.xml: 
  <select id = "selectMulitParam" resultType="com.lifang.domain.Student">select id,name,email,age from student where name = #{myname} or age = #{myage}</select>
8.2、StudentDao接口:
   public List<Student> selectMulitParam(@Param("myname") String name,@Param("myage") Integer age);
8.3、测试代码及结果:
    @org.junit.Testpublic void test04(){SqlSession sqlSession = MybatisUtils.getSqlSession();StudentDao dao = sqlSession.getMapper(StudentDao.class);List<Student> students = dao.selectMulitParam("李四",23);students.forEach(student -> System.out.println(student));}

九、多个参数-使用对象

                使用 java 对象传递参数, java 的属性值就是 sql 需要的参数值。 灵活又方便

         语法格式: #{ property属性名,javaType=java 数据类型的全限定名称,jdbcType=Mybatis定义的数据库中类型的名称 }

         javaType, jdbcType 的类型 MyBatis 可以通过反射获取,一般不需要设置。

         常用格式 #{ property } 

9.1、代表数据的实体类:
public class QueryParam {private String queryName;private Integer queryAge;
9.2、sql映射文件,StudentDao.xml: 
 <select id = "selectMultiObject" resultType="com.lifang.domain.Student">select id,name,email,age from student where name = #{queryName} or age =#{queryAge}</select>
9.3、StudentDao接口:
 public List<Student> selectMultiObject(QueryParam queryParam);
9.4、测试代码及结果:
   @org.junit.Testpublic void test05(){SqlSession sqlSession = MybatisUtils.getSqlSession();StudentDao dao = sqlSession.getMapper(StudentDao.class);QueryParam queryParam = new QueryParam("王五",23);List<Student> students = dao.selectMultiObject(queryParam);students.forEach(student -> System.out.println(student));}
 9.5、总结:

        所以我们传参的时候灵活一点,参数可以是现成的java对象,如Student;或者用自定义的java对象QueryParam:

public List<Student> selectMultiObject(QueryParam queryParam);public List<Student> selectMultiStudent(Student student);
<select id = "selectMultiObject" resultType="com.lifang.domain.Student">select id,name,email,age from student where name = #{queryName} or age =#{queryAge}</select><select id = "selectMultiStudent" resultType = "com.lifang.domain.Student">select id,name,email,age from student where  name = #{name} or age = #{age}</select>

十、多个参数-使用对象

http://www.lryc.cn/news/306333.html

相关文章:

  • 2024年数字化转型风口趋势大赏
  • 某款服务器插上4张TDP功耗75瓦PCIE卡无法开机的调试过程
  • 数据结构与算法——排序算法
  • 阿里巴巴alibaba API商品详情接口系列(商品属性,价格,主图)阿里巴巴alibaba根据ID取商品详情 API 返回值说明
  • lcd画圆
  • React组件详解
  • C++面试:内存溢出、内存泄漏的原因与解决
  • 【Java程序员面试专栏 算法思维】二 高频面试算法题:二分查找
  • kaldi 详细安装教程、PyTorch-Kaldi、TIMIT下载、Librispeech下载
  • EtherCAT 转 ModbusTCP 网关
  • iMazing2024Windows和Mac的iOS设备管理软件(可以替代iTunes进行数据备份和管理)
  • carpower
  • 数据结构2月25日
  • 改进 RAG:自查询检索
  • 【Git企业实战开发】Git常用开发流操作总结
  • vue2+element医院安全(不良)事件报告管理系统源代码
  • leetcode初级算法(python)- 字符串
  • Python 鼠标模拟
  • Linux进程 ----- 信号处理
  • 【数位】【数论】【分类讨论】2999. 统计强大整数的数目
  • MongoDB聚合运算符:$atan2
  • 敏捷开发最佳实践:价值维度实践案例之ABTest中台化
  • 爬虫基本库的使用(requests库的详细解析)
  • QT实现串口通信
  • 微信小程序 --- 通用模块封装(showToast,showModal ,本地存储)
  • 基于springboot+vue的音乐网站(前后端分离)
  • pclpy 最小二乘法拟合平面
  • 蓝桥杯备战刷题(自用)
  • Python习题详解
  • 绩效考核利器:Excel报表模板,解锁企业高效员工评价新境界