当前位置: 代码网 > it编程>编程语言>Java > IService丨Mybatis Plus IService使用手册

IService丨Mybatis Plus IService使用手册

2024年08月03日 Java 我要评论
是 MyBatis-Plus 提供的一个通用 Service 层接口,它封装了常见的 CRUD 操作,包括插入、删除、查询和分页等。通过继承 IService 接口,可以快速实现对数据库的基本操作,同时保持代码的简洁性和可维护性。IService 接口中的方法命名遵循了一定的规范,如 get 用于查询单行,remove 用于删除,list 用于查询集合,page 用于分页查询,这样可以避免与 Mapper 层的方法混淆。根据实体对象的主键 ID 进行判断,存在则更新记录,否则插入记录。查询符合条件的记录。

 建立service层

建立service接口
public interface userservice extends iservice<userentity> {}
建立service接口实现类serviceimpl
	@slf4j
	@service
	public class userserviceimpl extends serviceimpl<usermapper, userentity> implements  
	userservice {}


service interface接口内容说明

iservice 是 mybatis-plus 提供的一个通用 service 层接口,它封装了常见的 crud 操作,包括插入、删除、查询和分页等。通过继承 iservice 接口,可以快速实现对数据库的基本操作,同时保持代码的简洁性和可维护性。

iservice 接口中的方法命名遵循了一定的规范,如 get 用于查询单行,remove 用于删除,list 用于查询集合,page 用于分页查询,这样可以避免与 mapper 层的方法混淆。


插入功能save

// 插入一条记录(选择字段,策略插入)
boolean save(t entity);
// 插入(批量)
boolean savebatch(collection<t> entitylist);
// 插入(批量)
boolean savebatch(collection<t> entitylist, int batchsize);

功能描述:插入记录,根据实体对象的字段进行策略性插入。
返回值: boolean,表示插入操作是否成功。
参数说明:

类型参数名描述
tentity实体对象
collection<t>entitylist实体对象集合
intbatchsize插入批次数量
示例 
// 假设有一个 user 实体对象
user user = new user();
user.setname("john doe");
user.setemail("john.doe@example.com");
boolean result = userservice.save(user); // 调用 save 方法
if (result) {
    system.out.println("user saved successfully.");
} else {
    system.out.println("failed to save user.");
}
 生成的 sql:

insert into user (name, email) values ('john doe', 'john.doe@example.com')

如果存在就更新不存在就新增 saveorupdate

功能描述: 根据实体对象的主键 id 进行判断,存在则更新记录,否则插入记录。
返回值: boolean,表示插入或更新操作是否成功。
参数说明:

类型参数名描述
tentity实体对象
wrapper<t>updatewrapper实体对象封装操作类 updatewrapper
collection<t>entitylist实体对象集合
intbatchsize插入批次数量
// tableid 注解属性值存在则更新记录,否插入一条记录
boolean saveorupdate(t entity);
// 根据updatewrapper尝试更新,否继续执行saveorupdate(t)方法
boolean saveorupdate(t entity, wrapper<t> updatewrapper);
// 批量修改插入
boolean saveorupdatebatch(collection<t> entitylist);
// 批量修改插入
boolean saveorupdatebatch(collection<t> entitylist, int batchsize);
示例
// 假设有一个 user 实体对象,其中 id 是 tableid 注解的属性
user user = new user();
user.setid(1);
user.setname("john doe");
user.setemail("john.doe@example.com");
boolean result = userservice.saveorupdate(user); // 调用 saveorupdate 方法
if (result) {
    system.out.println("user updated or saved successfully.");
} else {
    system.out.println("failed to update or save user.");
}
生成的 sql(假设 id 为 1 的记录已存在):
update user set name = 'john doe', email = 'john.doe@example.com' where id = 1
生成的 sql(假设 id 为 1 的记录不存在):
insert into user (id, name, email) values (1, 'john doe', 'john.doe@example.com')


删除功能remove

// 根据 querywrapper 设置的条件,删除记录
boolean remove(wrapper<t> querywrapper);
// 根据 id 删除
boolean removebyid(serializable id);
// 根据 columnmap 条件,删除记录
boolean removebymap(map<string, object> columnmap);
// 删除(根据id 批量删除)
boolean removebyids(collection<? extends serializable> idlist);

功能描述: 通过指定条件删除符合条件的记录。
返回值: boolean,表示删除操作是否成功。
参数说明:

类型参数名描述
wrapper<t>querywrapper实体包装类 querywrapper
serializableid主键 id
map<string, object>columnmap表字段 map 对象
collection<? extends serializable>idlist主键 id 列表
示例:
删除
// 假设有一个 querywrapper 对象,设置删除条件为 name = 'john doe'
querywrapper<user> querywrapper = new querywrapper<>();
querywrapper.eq("name", "john doe");
boolean result = userservice.remove(querywrapper); // 调用 remove 方法
if (result) {
    system.out.println("record deleted successfully.");
} else {
    system.out.println("failed to delete record.");
}
 生成的 sql:
delete from user where name = 'john doe'
根据id删除
// 假设要删除 id 为 1 的用户
boolean result = userservice.removebyid(1); // 调用 removebyid 方法
if (result) {
    system.out.println("user deleted successfully.");
} else {
    system.out.println("failed to delete user.");
}
  生成的 sql:
delete from user where id = 1
批量删除
// 假设有一组 id 列表,批量删除用户
list<integer> ids = arrays.aslist(1, 2, 3);
boolean result = userservice.removebyids(ids); // 调用 removebyids 方法
if (result) {
    system.out.println("users deleted successfully.");
} else {
    system.out.println("failed to delete users.");
}
  生成的 sql:
delete from user where id in (1, 2, 3)


更新功能update

// 根据 updatewrapper 条件,更新记录 需要设置sqlset
boolean update(wrapper<t> updatewrapper);
// 根据 wherewrapper 条件,更新记录
boolean update(t updateentity, wrapper<t> wherewrapper);
// 根据 id 选择修改
boolean updatebyid(t entity);
// 根据id 批量更新
boolean updatebatchbyid(collection<t> entitylist);
// 根据id 批量更新
boolean updatebatchbyid(collection<t> entitylist, int batchsize);

功能描述: 通过指定条件更新符合条件的记录。
返回值: boolean,表示更新操作是否成功。
参数说明:

类型参数名描述
wrapper<t>updatewrapper实体对象封装操作类 updatewrapper
tentity实体对象
collection<t>entitylist实体对象集合
intbatchsize更新批次数量
 根据元素进行更新
// 假设有一个 updatewrapper 对象,设置更新条件为 name = 'john doe',更新字段为 email
updatewrapper<user> updatewrapper = new updatewrapper<>();
updatewrapper.eq("name", "john doe").set("email", "john.doe@newdomain.com");
boolean result = userservice.update(updatewrapper); // 调用 update 方法
if (result) {
    system.out.println("record updated successfully.");
} else {
    system.out.println("failed to update record.");
}
   生成的 sql:
update user set email = 'john.doe@newdomain.com' where name = 'john doe'
根据id进行更新
// 假设有一个 user 实体对象,设置更新字段为 email,根据 id 更新
user updateentity = new user();
updateentity.setid(1);
updateentity.setemail("updated.email@example.com");
boolean result = userservice.updatebyid(updateentity); // 调用 updatebyid 方法
if (result) {
    system.out.println("record updated successfully.");
} else {
    system.out.println("failed to update record.");
}

    生成的 sql:

update user set email = 'updated.email@example.com' where id = 1


查询功能get

// 根据 id 查询
t getbyid(serializable id);
// 根据 wrapper,查询一条记录。结果集,如果是多个会抛出异常,随机取一条加上限制条件 wrapper.last("limit 1")
t getone(wrapper<t> querywrapper);
// 根据 wrapper,查询一条记录
t getone(wrapper<t> querywrapper, boolean throwex);
// 根据 wrapper,查询一条记录
map<string, object> getmap(wrapper<t> querywrapper);
// 根据 wrapper,查询一条记录
<v> v getobj(wrapper<t> querywrapper, function<? super object, v> mapper);

功能描述: 根据指定条件查询符合条件的记录。
返回值: 查询结果,可能是实体对象、map 对象或其他类型。
参数说明:

类型参数名描述
serializableid主键 id
wrapper<t>querywrapper实体对象封装操作类 querywrapper
booleanthrowex有多个 result 是否抛出异常
tentity实体对象
function<? super object, v>mapper转换函数
根据id进行查询
// 假设要查询 id 为 1 的用户
user user = userservice.getbyid(1); // 调用 getbyid 方法
if (user != null) {
    system.out.println("user found: " + user);
} else {
    system.out.println("user not found.");
}
   生成的 sql:
select * from user where id = 1
根据对象进行查询
// 假设有一个 querywrapper 对象,设置查询条件为 name = 'john doe'
querywrapper<user> querywrapper = new querywrapper<>();
querywrapper.eq("name", "john doe");
user user = userservice.getone(querywrapper); // 调用 getone 方法
if (user != null) {
    system.out.println("user found: " + user);
} else {
    system.out.println("user not found.");
}
生成的sql:
select * from user where name = 'john doe' limit 1


查询记录功能list

// 查询所有
list<t> list();
// 查询列表
list<t> list(wrapper<t> querywrapper);
// 查询(根据id 批量查询)
collection<t> listbyids(collection<? extends serializable> idlist);
// 查询(根据 columnmap 条件)
collection<t> listbymap(map<string, object> columnmap);
// 查询所有列表
list<map<string, object>> listmaps();
// 查询列表
list<map<string, object>> listmaps(wrapper<t> querywrapper);
// 查询全部记录
list<object> listobjs();
// 查询全部记录
<v> list<v> listobjs(function<? super object, v> mapper);
// 根据 wrapper 条件,查询全部记录
list<object> listobjs(wrapper<t> querywrapper);
// 根据 wrapper 条件,查询全部记录
<v> list<v> listobjs(wrapper<t> querywrapper, function<? super object, v> mapper);

功能描述: 查询符合条件的记录。
返回值: 查询结果,可能是实体对象、map 对象或其他类型。
参数说明:

类型参数名描述
wrapper<t>querywrapper实体对象封装操作类 querywrapper
collection<? extends serializable>idlist主键 id 列表
map<string, object>columnmap表字段 map 对象
function<? super object, v>mapper转换函数
示例:
查询全部
// 查询所有用户
list<user> users = userservice.list(); // 调用 list 方法
for (user user : users) {
    system.out.println("user: " + user);
}
生成的sql:
select * from user
根据实体进行查询
// 假设有一个 querywrapper 对象,设置查询条件为 age > 25
querywrapper<user> querywrapper = new querywrapper<>();
querywrapper.gt("age", 25);
list<user> users = userservice.list(querywrapper); // 调用 list 方法
for (user user : users) {
    system.out.println("user: " + user);
}
生成的sql:
select * from user where age > 25
批量查询用户
// 假设有一组 id 列表,批量查询用户
list<integer> ids = arrays.aslist(1, 2, 3);
collection<user> users = userservice.listbyids(ids); // 调用 listbyids 方法
for (user user : users) {
    system.out.println("user: " + user);
}

生成的sql:

select * from user where id in (1, 2, 3)


分页查询

// 无条件分页查询
ipage<t> page(ipage<t> page);
// 条件分页查询
ipage<t> page(ipage<t> page, wrapper<t> querywrapper);
// 无条件分页查询
ipage<map<string, object>> pagemaps(ipage<t> page);
// 条件分页查询
ipage<map<string, object>> pagemaps(ipage<t> page, wrapper<t> querywrapper);

功能描述: 分页查询符合条件的记录。
返回值: 分页查询结果,包含记录列表和总记录数。
参数说明:

类型参数名描述
ipage<t>page翻页对象
wrapper<t>querywrapper实体对象封装操作类 querywrapper
示例
分页查询
// 假设要进行无条件的分页查询,每页显示10条记录,查询第1页
ipage<user> page = new page<>(1, 10);
ipage<user> userpage = userservice.page(page); // 调用 page 方法
list<user> userlist = userpage.getrecords();
long total = userpage.gettotal();
system.out.println("total users: " + total);
for (user user : userlist) {
    system.out.println("user: " + user);
}
 生成的sql:
select * from user limit 10 offset 0
根据实体对象进行分页
// 假设有一个 querywrapper 对象,设置查询条件为 age > 25,进行有条件的分页查询
ipage<user> page = new page<>(1, 10);
querywrapper<user> querywrapper = new querywrapper<>();
querywrapper.gt("age", 25);
ipage<user> userpage = userservice.page(page, querywrapper); // 调用 page 方法
list<user> userlist = userpage.getrecords();
long total = userpage.gettotal();
system.out.println("total users (age > 25): " + total);
for (user user : userlist) {
    system.out.println("user: " + user);
}
生成的sql:
select * from user where age > 25 limit 10 offset 0


查询总记录数

// 查询总记录数
int count();
// 根据 wrapper 条件,查询总记录数
int count(wrapper<t> querywrapper);

//自3.4.3.2开始,返回值修改为long
// 查询总记录数
long count();
// 根据 wrapper 条件,查询总记录数
long count(wrapper<t> querywrapper);

功能描述: 查询符合条件的记录总数。
返回值: 符合条件的记录总数。
参数说明:

类型参数名描述
wrapper<t>querywrapper实体对象封装操作类 querywrapper
示例
// 查询用户表中的总记录数
int totalusers = userservice.count(); // 调用 count 方法
system.out.println("total users: " + totalusers);
生成的sql:
select count(*) from user
根据对象进行查询:
// 假设有一个 querywrapper 对象,设置查询条件为 age > 25,查询满足条件的用户总数
querywrapper<user> querywrapper = new querywrapper<>();
querywrapper.gt("age", 25);
int totalusers = userservice.count(querywrapper); // 调用 count 方法
system.out.println("total users (age > 25): " + totalusers);
 生成的sql:
select count(*) from user where age > 25

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com