MyBatis的各种查询功能

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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值