• Mybatis总结--传参二


     #叫做占位符

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

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

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

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

    八、多个参数-使用@Param

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

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

    九、多个参数-使用对象

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

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

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

             常用格式 #{ property } 

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

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

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

    十、多个参数-使用对象

  • 相关阅读:
    adb官方最新下载链接和常用操作
    ConcurrentDictionary<T,V> 的这两个操作不是原子性的
    java计算机毕业设计基于安卓Android微信的酒店宾馆预约预定管理系统 uniAPP
    Java之juc旅途-atomic(五)
    哪种护眼灯孩子用着最好?盘点五款用眼舒适度高的护眼灯
    leetcode做题笔记160. 相交链表
    Weblogic SSRF 漏洞(CVE-2014-4210)分析
    企业上半年净利润下降近8成,企业如何应对?
    SpringCloud之nacos
    编译期间生成代码(Lombok原理)
  • 原文地址:https://blog.csdn.net/weixin_53676834/article/details/136276282