mybatis获取参数的两种方式: #{ } 和 ${ }

Mybatis中获取参数值的两种方式:${} 和 #{}
     ${}本质是字符串拼接
     #{}本质是占位符赋值


1.1  mapper接口方法的参数为单个的字面变量类型(${} 和 #{}都可以用应该注意${}的''问题   应该用'${}')
   

/*
    * 根据用户名获取用户信息
    * */
    Users getUserByUsername(String username);


    


@Test
    public void testgetUserByUsername(){
        SqlSession sqlsession = SQLsession.getSqlsession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        Users user = mapper.getUserByUsername("双");
        System.out.println(user);

    }


1.2  mapper接口方法的参数为多个的字面变量类型(${} 和 #{}都可以用应该注意${}的''问题   应该用'${}')
              此时的mybatis会把参数放入到一个map集合中,可以用两种方式进行存储
                    a.可以通过arg0,arg1...为key,以参数为值
                    d.可以通过param1,param2...为key,以参数为值的形式获取

  /*
    * 登录验证(数据库没有password字段就用age代替了)
    * */
    Users checkLogin(String username ,int age);



    




/*
     * 情况二测试
     * */
    @Test
    public void testcheckLogin(){
        SqlSession sqlsession = SQLsession.getSqlsession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        Users user = mapper.checkLogin("双双",22);
        System.out.println(user);

    }

  
1.3 若mapper方法的参数有多个时,可以手动放到一个map中存储
             (${} 和 #{}都可以用应该注意${}的''问题   应该用'${}'  自己设置键值不是mybatis设置的) 

  /*
     * 登录验证(数据库没有password字段就用age代替了)
     * */
    Users checkLoginByMap(Map map);


    



/*
     * 情况三测试
     * */
    @Test
    public void testcheckLoginByMap(){
        SqlSession sqlsession = SQLsession.getSqlsession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        Map map = new HashMap();
        map.put("name",20);
        map.put("age",12);
        Users user = mapper.checkLoginByMap(map);
        System.out.println(user);

    }


1.4 mapper接口中方法的参数是实体参数
            (${} 和 #{}都可以用 (以属性的方式访问属性值) 应该注意${}的''问题   应该用'${}')

//添加
    int insertUsers(Users users);


    
          insert into  users values ('2022-08-16 12:15:23',null ,18,'小双双',22,'[email protected]',1,0)
    




/*
     * 情况四测试
     * */
    @Test
    public void testinsertUser(){
        SqlSession sqlsession = SQLsession.getSqlsession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        int user = mapper.insertUsers(new Users(null,null ,1,"shang",12,"12233",0,0));
        System.out.println(user);

    }


1.5  命名参数@Param (${} 和 #{}都可以用应该注意${}的''问题   应该用'${}')
            此时的mybatis会把参数放入到一个map集合中,可以用两种方式进行存储
                    a.可以通过@Param注解的值为key,以参数为值
                    d.可以通过param1,param2...为key,以参数为值的形式获取
 

/*
     * 登录验证(数据库没有password字段就用age代替了)
     * */
    Users checkLoginByParam(@Param("username")String name ,@Param("age")int age );


 



/*
     * 情况五测试
     * */
    @Test
    public void testcheckLoginByParam(){
        SqlSession sqlsession = SQLsession.getSqlsession();
        UserMapper mapper = sqlsession.getMapper(UserMapper.class);
        Users user = mapper.checkLoginByParam("双双",22);
        System.out.println(user);

    }

你可能感兴趣的:(MyBatis,mybatis,java,开发语言)