MyBatis @Param注解的使用和参数的说明

1.为什么要使用@Param注解

在上篇博客中,我们以及将代码跑起来了,在跑起来后,我们是否思考过当方法中传递多个参数的时候,这个方法该怎么办,有人可能想到用逗号分开,但是发现会报错。就很神奇,说明MyBatis有专门的方法来解决多个简单参数赋值的方法。这就是我今天要说的@Param注解

2. @Param注解的使用情况

在什么情况使用@Param注解呢??  

1.当方法有多个参数时。(最常用)

2.想给方法的参数取别名。(可以将复杂的参数名称换个简单的)

3.当xml文件的sql语句含有占位符$($占位符稍后会讲解)

4.如果在动态 SQL 中使用了参数作为变量,那么也需要 @Param 注解,即使你只有一个参数。

 3.@Param注解的使用方法

@Param(value = "自定义名称") 数据类型  参数名称

@Param注解是由MyBatis提供的。   位置放到形参前面。   属性 value= 可以省略不写 。可能看的不是很明白,下面就说个例子

List selectNameAge(@Param(value = "myname") String name,
                            @Param("age") Integer age);

在这个例子中将参数"name" 取别名为“myname”。在xml文件中相关的写入的就是“myname”了。 下面是完整代码。

在StudentDao接口中写入方法

List selectNameAge(@Param(value = "myname") String name,
                            @Param("age") Integer age);

 在StudentDao.xml文件中


    

 测试类

 @Test
    public void TestNameAge(){
        SqlSession session =MybatisUtils.getSqlSession();
        StudentDao dao=session.getMapper(StudentDao.class);
        List student=dao.selectNameAge("王五",22);
        student.forEach(stu -> System.out.println(stu));
    }

运行结果:

MyBatis @Param注解的使用和参数的说明_第1张图片

 

 4.方法的参数说明

方法的参数不仅仅只能是简单类型,它可以是类也可以是集合 ,但是map作为参数是不建议使用的。不管是那种参数都可以做增删改查操作。下面举两个例子。看着代码来理解会更容易。

StudentDao接口要添加的代码

//java对象作为参数
    List selectStudents(Student student);
    //用map作为参数  不建议使用
    List selectMap(Map map);
    // 修改操作
    int updateStudent(Student student);

StudentDao.xml文件要写的代码


    
    
    



    
    


    
        update student set name=#{name},age=#{age} where id=#{id}
    

测试代码

 @Test
    public void selectObject(){
        SqlSession session =MybatisUtils.getSqlSession();
        StudentDao stu=session.getMapper(StudentDao.class);
        Student student=new Student();  
        student.setName("张三");  
        student.setAge(23);
        List st= stu.selectStudents(student);//查询名字叫张三 或者年龄等于23的人的个人信息
        st.forEach(s -> System.out.println(s));
        session.close();
    }
    @Test
    public void TestMap(){
        SqlSession session=MybatisUtils.getSqlSession();
        StudentDao dao=session.getMapper(StudentDao.class);
        Map map=new HashMap<>();
        map.put("myname","王五");
        map.put("myage",22);
       List stu= dao.selectMap(map);  //查询名字叫王五 或者年龄等于22的人的个人信息
        stu.forEach(s->System.out.println(s));
    }
    @Test
    public void Testupdate(){
        SqlSession session = MybatisUtils.getSqlSession();
        StudentDao dao=session.getMapper(StudentDao.class);
        Student student=new Student();
        student.setAge(23);
        student.setName("刘海洋");
        student.setId(10001);
        student.setEmail("[email protected]");  //把id等于10001的人name改为“刘海洋”,age改为23
        int a=dao.updateStudent(student);
        session.commit();
        System.out.println(a);
        session.close();
    }

运行结果

selectStudents类

MyBatis @Param注解的使用和参数的说明_第2张图片

 selectMap类

MyBatis @Param注解的使用和参数的说明_第3张图片

updateStudent类

MyBatis @Param注解的使用和参数的说明_第4张图片

 

 

 

你可能感兴趣的:(#,MyBatis,mybatis)