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


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


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

    1. /*
    2. * 根据用户名获取用户信息
    3. * */
    4. Users getUserByUsername(String username);
    5. @Test
    6. public void testgetUserByUsername(){
    7. SqlSession sqlsession = SQLsession.getSqlsession();
    8. UserMapper mapper = sqlsession.getMapper(UserMapper.class);
    9. Users user = mapper.getUserByUsername("双");
    10. System.out.println(user);
    11. }


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

    1. /*
    2. * 登录验证(数据库没有password字段就用age代替了)
    3. * */
    4. Users checkLogin(String username ,int age);
    5. /*
    6. * 情况二测试
    7. * */
    8. @Test
    9. public void testcheckLogin(){
    10. SqlSession sqlsession = SQLsession.getSqlsession();
    11. UserMapper mapper = sqlsession.getMapper(UserMapper.class);
    12. Users user = mapper.checkLogin("双双",22);
    13. System.out.println(user);
    14. }

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

    1. /*
    2. * 登录验证(数据库没有password字段就用age代替了)
    3. * */
    4. Users checkLoginByMap(Map map);
    5. /*
    6. * 情况三测试
    7. * */
    8. @Test
    9. public void testcheckLoginByMap(){
    10. SqlSession sqlsession = SQLsession.getSqlsession();
    11. UserMapper mapper = sqlsession.getMapper(UserMapper.class);
    12. Map map = new HashMap();
    13. map.put("name",20);
    14. map.put("age",12);
    15. Users user = mapper.checkLoginByMap(map);
    16. System.out.println(user);
    17. }


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

    1. //添加
    2. int insertUsers(Users users);
    3. "insertUsers">
    4. insert into users values ('2022-08-16 12:15:23',null ,18,'小双双',22,'helen@sina.com',1,0)
    5. /*
    6. * 情况四测试
    7. * */
    8. @Test
    9. public void testinsertUser(){
    10. SqlSession sqlsession = SQLsession.getSqlsession();
    11. UserMapper mapper = sqlsession.getMapper(UserMapper.class);
    12. int user = mapper.insertUsers(new Users(null,null ,1,"shang",12,"12233",0,0));
    13. System.out.println(user);
    14. }


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

    1. /*
    2. * 登录验证(数据库没有password字段就用age代替了)
    3. * */
    4. Users checkLoginByParam(@Param("username")String name ,@Param("age")int age );
    5. /*
    6. * 情况五测试
    7. * */
    8. @Test
    9. public void testcheckLoginByParam(){
    10. SqlSession sqlsession = SQLsession.getSqlsession();
    11. UserMapper mapper = sqlsession.getMapper(UserMapper.class);
    12. Users user = mapper.checkLoginByParam("双双",22);
    13. System.out.println(user);
    14. }

  • 相关阅读:
    万字长文详解Java线程池面试题
    不要忽视算法最朴素的意义
    希尔排序算法(思路分析) [数据结构][Java]
    如何上传一个已有的Android项目到Gerrit
    RabbitMq:RabbitMq 主从镜像模式②
    微服务技术栈-Ribbon负载均衡和Nacos注册中心
    Go-Zero从0到1实现微服务项目开发(二)
    虹科案例 | AR内窥镜手术应用为手术节约45分钟?
    内网穿透工具 Cpolar 帮您实现用友U8 Cloud 的外网部署,一键畅享云端ERP
    工程化面试题汇总
  • 原文地址:https://blog.csdn.net/m0_61916154/article/details/127089411