MyBatis的各种查询功能
* 1.若查询的数据只有一条
* a>可以通过实体类对象接受
* b>可以通过list集合接受
* c>可以通过map集合接受(以字段值为键,以字段值为值)
* 2.若查询的数据有多条
* a>可以通过实体类类型的list集合
* b>可以通过map类型的list集合接受
* c>可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,
* 以某个字段的值作为键,放在同一个map集合中
* 注意:一定不可以通过实体类对象接受,否则会抛出异常TooManyResultException*/
tips:
1.要确定要查询什么数据,然后才能确定返回值的类型
2.先创建mapper接口(以功能命名),再创建xml配置文件(命名空间要与mapper接口的全类名一致)
1.xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--配置文件的命名空间要与mapper接口的全类名一致-->
<mapper namespace="com.sdjzu.mybatis.mapper.SelectMapper">
<!-- User getUserById(@Param("id") Integer id);-->
<!--@Param以值为键,以传入的参数为值-->
<!--select的id中不可以有空格-->
<select id="getUserById" resultType="User">
select * from t_user where id=#{id};
</select>
<!-- java.util.List<User> getAllUser();-->
<select id="getAllUser" resultType="User">
select * from t_user
</select>
<!--Integer getCount();-->
<select id="getCount" resultType="Integer">
select count(1) from t_user
</select>
<!--Map<String , Object> getUserByIdToMap();-->
<select id="getUserByIdToMap" resultType="map">
select * from t_user where id=#{id}
</select>
<!--java.util.List<Map<String,Object>> getAllUserToMap();-->
<select id="getAllUserToMap" resultType="map">
select * from t_user
</select>
</mapper>
2.mapper接口
package com.sdjzu.mybatis.mapper;
import com.sdjzu.mybatis.pojo.User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface SelectMapper<List> {
/*
* 根据id查询用户信息
* */
/*实体类对象接受*/
User getUserById(@Param("id") Integer id);
/*list集合接受*/
/*List<User> getUserById(@Param("id") Integer id);*/
/*
* 查询使用用户信息*/
java.util.List<User> getAllUser();
/*查询用户记录*/
Integer getCount();
/*根据id查询用户信息用map集合接受*/
Map<String , Object> getUserByIdToMap(@Param("id") Integer id);
/*
* 查询所用用户信息,用map类型的list接受*/
/*java.util.List<Map<String,Object>> getAllUserToMap();*/
@MapKey("id")//用id作为键,用转化为的map作为值
Map<String,Object> getAllUserToMap();
}
3.测试类
package com.sdjzu.mybatis.test;
import com.sdjzu.mybatis.mapper.SelectMapper;
import com.sdjzu.mybatis.pojo.User;
import com.sdjzu.mybatis.utils.SqlSessionUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
import java.util.Map;
public class SelectMapperTest {
/*
* MyBatis的各种查询功能
* 1.若查询的数据只有一条
* a>可以通过实体类对象接受
* b>可以通过list集合接受
* c>可以通过map集合接受(以字段值为键,以字段值为值)
* 2.若查询的数据有多条
* a>可以通过实体类类型的list集合
* b>可以通过map类型的list集合接受
* c>可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,
* 以某个字段的值作为键,放在同一个map集合中
* 注意:一定不可以通过实体类对象接受,否则会抛出异常TooManyResultException*/
@Test
public void testGetUserById(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
User userById = mapper.getUserById(1);
System.out.println("userById = " + userById);
}
@Test
public void testGetAllUser(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
List<User> allUser = mapper.getAllUser();
for(User user:allUser){
System.out.println(user);
}
}
@Test
public void testGetCount(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
Integer count = mapper.getCount();
System.out.println("count = " + count);
}
@Test
public void testGetUserByIdToMap(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
Map userByIdToMap = mapper.getUserByIdToMap(1);
System.out.println("userByIdToMap = " + userByIdToMap);
}
/* @Test
public void testGetAllUserToMap(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
List<Map<String,Object>> ballUserToMap = mapper.getAllUserToMap();
for(Map<String ,Object> map:ballUserToMap){
System.out.println("map = " + map);
}
}*/
/*
@Test
public void testGetAllUserToMap(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
Map<String,Object> ballUserToMap = mapper.getAllUserToMap();
for(String map:ballUserToMap.keySet()){
System.out.println(map+"=="+ballUserToMap.get(map));
}
}
*/
}