栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis(二)MyBatis获取参数的两种方式和查询功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis(二)MyBatis获取参数的两种方式和查询功能

文章目录

MyBatis获取参数的两种方式

单个字面量类型的参数多个字面量类型的参数Map集合类型的参数实体类类型的参数使用@Param标识参数 MyBatis的各种查询功能

查询一个实体类对象查询一个List集合查询单个数据查询一条数据为Map集合查询多条数据为Map集合

MyBatis获取参数的两种方式

MyBatis获取参数值的两种方式:${}和#{}。

${}的本质就是字符串拼接,#{}的本质就是占位符赋值。

${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号。

#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号。

单个字面量类型的参数

#{}和${}都可以使用任意的名称来获取参数值,需要注意的是${}需要手动添加单引号。

Mapper接口:

    
    User getUserByUserName(String username);

xml配置:

    
    
    
        select * from t_user where username = '${username}';
    

单元测试:

@Test
public void testGetUserByUserName(){
    SqlSession sqlSession = SqlSessionUtils.getSqlSession("mybatis-config.xml");
    ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
    User user = mapper.getUserByUserName("桑奇");
    System.out.println(user);
}
多个字面量类型的参数

当mapper接口中的方法参数为多个时,此时MyBatis会自动将这些参数放在一个map集合中,以arg0,arg1…为键,以参数为值;以param1,param2,…为键,以参数为值。

因此只需要通过${}和#{}访问map集合的键就可以获取相应的值,${}需要手动加单引号。

mapper接口

    
    User getLogin(String username,String password);

xml配置:

    
    
        select * from t_user where username = #{username} and password = #{password};
    

单元测试:

@Test
public void testCheckLogin(){
    SqlSession sqlSession = SqlSessionUtils.getSqlSession("mybatis-config.xml");
    ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
    Map map = new HashMap<>();
    map.put("username","桑奇");
    map.put("password","sangqi168");
    User user = mapper.checkLogin(map);
    System.out.println(user);
}
实体类类型的参数

若mapper接口中的方法参数为实体类对象时,可以使用${}和#{},通过访问实体类对象中的属性名获取属性值,${}需要手动添加单引号。

mapper接口:

    
    int insertUser(User user);

xml配置:

    
    
        insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email});
    

单元测试:

@Test
public void testInsertUser(){
    SqlSession sqlSession = SqlSessionUtils.getSqlSession("mybatis-config.xml");
    ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
    mapper.insertUser(new User(null,"桑奇","sangqi168",1,"男","sangqi@wz.com"));
}
使用@Param标识参数

可以通过@Param注解标识mapper接口中的方法参数。

此时会将这些参数放在map集合中,以@Param注解的value属性值为键,以参数为值;以param1,param2,…为键,以参数为值。通过访问Map集合中的键就可以获取相对应的值,${}需要手动添加单引号。

mapper接口

    
    User checkLoginByParam(@Param("username") String username,@Param("password") String password);

xml配置:

    
        select * from t_user where id = #{id}
    

单元测试:

@Test
public void testGetUserById(){
    SqlSession sqlSession = SqlSessionUtils.getSqlSession("mybatis-config.xml");
    SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
    User user = mapper.getUserById(5);
    System.out.println(user);
}
查询一个List集合

mapper接口

    
    List getUserList();

xml配置

    
        select count(*) from t_user;
    

单元测试

@Test
public void testGetCount(){
    SqlSession sqlSession = SqlSessionUtils.getSqlSession("mybatis-config.xml");
    SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
    int count = mapper.getCount();
    System.out.println(count);
}
查询一条数据为Map集合

mapper接口

    
    Map getUserMapById(@Param("id") Integer id);

xml配置:

    
	select * from t_user

单元测试

@Test
public void testGetAllUserToMap(){
    SqlSession sqlSession = SqlSessionUtils.getSqlSession("mybatis-config.xml");
    SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
    List> list = mapper.getUserMap();
    list.forEach(System.out::println);
}

方式二:

mapper接口

    
    @MapKey("id")
    Map getUserMap();

xml配置

    

单元测试

@Test
public void testGetUserMap(){
    SqlSession sqlSession = SqlSessionUtils.getSqlSession("mybatis-config.xml");
    SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
    Map map = mapper.getUserMap();
    System.out.println(map);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/755476.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号