MyBatis的各种查询功能
1、查询一个实体类对象
/**
* @param id id
* @return {@link User }
* @Description getUserById 根据用户id获取用户信息
* @author summer
*/
public abstract User getUserById(@Param(value = "id") Integer id);
<!-- public abstract User getUserById(@Param(value="id") Integer id);-->
<select id="getUserById" resultType="User">
select * from t_user where id = #{id}
</select>
2、查询多个实体对象(一个List集合)
/**
* @return {@link List }<{@link User }>
* @Description queryAllUsers 查询所有用户
* @author summer
*/
public abstract List<User> queryAllUsers();
<!-- public abstract List<User> queryAllUsers();-->
<select id="queryAllUsers" resultType="User">
select * from t_user
</select>
3、查询单个数据
如查询用户个数
/**
* @return {@link Integer }
* @Description getCount 得到用户的数量
* @author summer
*/
public abstract Integer getUsersCount();
/**
* @param id id
* @return {@link String }
* @Description getUserNameById 通过id获取用户名
* @author summer
*/
public abstract String getUserNameById(@Param(value = "id") Integer id);
<!--
MaBatis中为Java中常用的类型设置了类型别名(别名不区分大小写),举以下常见例子
Integer:Integer|int
int:_int,_integer
String:string
Map:map
-->
<!-- public abstract Integer getUsersCount();-->
<select id="getUsersCount" resultType="Integer">
select count(*) from t_user
</select>
<!-- public abstract String getUserNameById(@Param(value="id") Integer id);-->
<select id="getUserNameById" resultType="String">
select username from t_user where id = #{id}
</select>
4、查询一条数据为map的集合
如查询得到的数据不是对应的实体,此时查询的数据可以封装成一个map,map的key为查询的字段名,value为该字段名对应的属性值
若sql语句查询的结果为多条时,一定不能以实体类类型作为方法的返回值
否则会报TooManyResultsException异常
若sql语句查询的结果为一条时,可以以集合类类型作为方法的返回值
此时实体类就在集合类之中
/**
* @param id id
* @return {@link Map }<{@link String },{@link Object }>
* @Description getUserByToMap 通过id获取用户相关键值对
* @author summer
*/
public abstract Map<String, Object> getUserByIdToMap(@Param(value = "id") Integer id);
<!-- public abstract Map<String,Object> getUserByToMap(@Param(value="id") Integer id);-->
<select id="getUserByIdToMap" resultType="Map">
select * from t_user where id = #{id}
</select>
5、查询多条数据为map的集合
查询所有的用户信息为map集合
若查询的数据有多条时,并且要将每条数据转换为map集合
此时有两种解决方案
1、将mapper接口方法的返回值设置为泛型时map的List集合
2、将mapper接口方法的返回值仍设置为map集合,但是给该方法加上该注解
@MapKey(value=“”):
该注解功能:设置返回的map集合的key为某个字段的值
- 方式一:
/**
* @return {@link Map }<{@link String },{@link Object }>
* @Description getAllUsersToMap 获取所有用户对应的键值对
* @author summer
*/
List<Map<String, Object>> getAllUserToMap();
<!-- List<Map<String, Object>> getAllUserToMap();-->
<select id="getAllUserToMap" resultType="Map">
select * from t_user
</select>
- 方式二:
/**
* @return {@link Map }<{@link String }, {@link Object }>
* @Description getAllUsersToMap 让所有用户映射
* @author summer
*/
@MapKey(value = "id")
public abstract Map<String, Object> getAllUsersToMap();
<!-- @MapKey(value = "id")-->
<!-- public abstract Map<String, Object> getAllUsersToMap();-->
<select id="getAllUsersToMap" resultType="Map">
select * from t_user
</select>