1 根据ID查询
1.1 在对象中设置ID
首先创建要查询的对象,并通过 set() 方法设置要查询的记录ID。
在控制台输出的SQL语句如下:
==> Preparing: SELECT id,username,gendar,remark FROM user WHERE id=?
==> Parameters: 12(Integer)
<== Columns: id, username, gendar, remark
<== Row: 12, 赵四, 女, 英语老师
<== Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@249e0271]
User(id=12, username=赵四, gendar=女, remark=英语老师)
1.2 在查询参数中设置ID
创建要查询的对象,不在对象中设置ID属性,在调用 selectById() 方法时,将要查询的 ID 作为参数传入到方法中。
在控制台输出的SQL语句如下:
==> Preparing: SELECT id,username,gendar,remark FROM user WHERE id=?
==> Parameters: 12(Integer)
<== Columns: id, username, gendar, remark
<== Row: 12, 赵四, 女, 英语老师
<== Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78525ef9]
User(id=12, username=赵四, gendar=女, remark=英语老师)
1.3 异常情况
1.3.1 未设置ID信息
在使用ID查询记录时,忘记设置ID信息。
报错信息如下:
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: selectById primaryKey is null.
1.3.2 ID设置重复
在使用ID查询记录时,既在创建的对象中设置了ID,又在 selectById() 方法中也指定了ID,并且两个ID不相同。
此时,程序会优先使用 selectById() 方法中指定的 ID 进行查询。
==> Preparing: SELECT id,username,gendar,remark FROM user WHERE id=?
==> Parameters: 25(Integer)
<== Total: 0
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78525ef9]
null
2 根据筛选条件查询记录
使用 QueryWrapper 对象设置筛选条件,对应的方法有:
- selectOne() 根据筛选条件得到结果集后,取出其中第一条记录;
- selectList() 根据筛选条件得到结果集后,取出所有记录。
控制台输出如下:
3 查询全部记录
创建对象后不设置任何属性,即为全表查询。
实际执行的 SQL 语句如下
4 分页查询
创建分页对象,并指定当前页,每页记录条数;
创建 QueryWrapper 查询构造器,设置筛选条件。
执行SQL过程如下,可以看到先后进行了两次查询:
第一次查询记录总数;
第二次查询指定分页条件的记录。