MyBatis的各种查询功能
//接口方法
public interface SelectMapper
{
/**
* 根据id查询用户信息
*
*/
<!--User getUserById(
<!--映射文件-->
<!-- User getUserByid(
2 . 查询一个list集合
//接口方法
/**
* 查询所有的用户信息
*/
List<User> getAllUser();
<!--映射文件-->
<!-- List<User> getAllUser();-->
<select id="getAllUser" resultType="User">
select * from t_user
</select>
3 . 查询单个数据
//接口方法
/**
* 查询用户的总记录数
* @return
* 在MyBatis中,对于Java中常用的类型都设置了类型别名
* 例如:java.lang.Integer-->int|integer
* 例如:int-->_int|_integer
* 例如:Map-->map,List-->list
* 查询用户信息的总记录数
*/
Integer getCount();
<!--映射文件-->
<!-- Integer getCount();-->
<!--
需要把查询的结果转换Integer:java.lang.Integer
也可以integer等等,因为这是类型别名,mybatis所设置的(默认)
一些默认的类型别名可以去mybatis官方参考手册查看
-->
<select id="getCount" resultType="java.lang.Integer">
<!-- count()里面写1,*,字段 都行,1和*查询出来的结果一样的,字段查询出来的字段不一样,字段的值为null记录就不会被算进去 -->
select count(*) from t_user
</select>
4 . 查询一条数据为map集合
// 接口方法
/**
* 根据id查询用户信息为一个map集合
*/
Map<String,Object> getUserByIdToMap(
<!--映射文件-->
<!-- Map<String,Object> getUserByIdToMap(
5 . 查询多条数据为map集合
接口方法
/**
* 查询所有用户信息为map集合
* Map集合的键设置为String,值是Object(都得这样设置)
* 方法1:查询一条数据转换的就是一个Map集合,查询出来多条数据可以把多个map放到一个list集合中
* 注意:Map集合也可存储多条数据,只不过是map集合里面有键和值,
* 而我们当前查询出来的每一条数据所转换的Map只能作为键或者值,
* 所以Map集合形成不了一条数据,
* 方法2:这时候就可以加上一个注解@MapKey():来设置当前Map集合的键,
* 就会把我们当前所查询的数据的某一个字段来作为键,
* 把当前查询出来的数据转换成Map集合来作为值,其它都有可能重复,就把id作为键
*/
// List<Map<String,Object>> getAllUserToMap();
<!--映射文件-->
<!-- Map<String,Object> getAllUserToMap();-->
<select id="getAllUserToMap" resultType="Map">
select * from t_user
</select>
public class SelectMapperTest
{
//测试方法
/**
* MyBatis的各种查询功能:
* 1.若查询出的数据只有一条,可以通过
* ①可以实体类对象
* ②可以集合List接收
* ③可以通过map集合来接收(以字段为键,字段所对应的值为值)
* 结果:{password=123, sex=男, id=3, age=23, email=123@qq.com, username=李四}
* 2.若查询出的数据有多条:
* ①可以通过实体类类型的List集合接收
* ②可以通过map类型的List集合接收
* ③可以在Map接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,以某个字段值作为键,放到同一个map中
*
* 注意:一定不能通过实体类对象接收收,此时会抛异常TooManyResultsException
*/
//1
浙公网安备 33010602011771号