Service CRUD 接口
说明:
- 通用 Service CRUD 封装IService (opens new window)接口,进一步封装 CRUD 采用
get 查询单行
remove 删除
list 查询集合
page 分页
前缀命名方式区分Mapper
层避免混淆, - 泛型
T
为任意实体对象 - 建议如果存在自定义通用 Service 方法的可能,请创建自己的
IBaseService
继承Mybatis-Plus
提供的基类 - 对象
Wrapper
为 条件构造器
Service层
1、创建 service 层接口
public interface UserService extends IService<User> { }
2、创建接口的实现,添加注解
@Service //我们实现 UserService 接口的时候,UserService接口继承了 IService 所以可以继承 ServiceImpl<Mapper接口,实体类> 就可以了 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { }
3、测试方法
创建测试类,连接接口。
@SpringBootTest public class MyUserServiceImplTest { @Autowired UserService userService; }
01、查询总记录条数
/** * 查询表中总记录数 */ @Test public void TestGetCount1(){ int count = userService.count(); System.out.println(count); }
02、查询表中所有记录
/** * 查询表中所有记录 */ @Test public void TestGetList2(){ List<User> list = userService.list(); for (User user : list) { System.out.println("user = " + user); } }
03、添加一条记录
/** * 添加一条记录 */ @Test public void TestSaveCount3(){ User user=new User(); user.setName("张三"); user.setAge(18); user.setEmail("123333244@qq.com"); boolean save = userService.save(user); System.out.println(save); }
04、批量添加数据
/** * 批量添加数据 */ @Test public void TestSaveBatch(){ List<User> list=new ArrayList<>(); for (int i = 1; i < 5; i++) { User user=new User(); user.setName("libai"+i); user.setAge(16+i); list.add(user); } boolean save = userService.saveBatch(list); System.out.println(save); }
05、通过ID修改记录
/** * 通过ID修改记录 */ @Test public void TestUpdateCount4(){ User user=new User(); user.setId(3L); user.setName("李四"); user.setAge(18); user.setEmail("123333244@qq.com"); boolean save = userService.updateById(user); System.out.println(save); }
06、通过ID删除记录
/** * 通过ID删除记录 */ @Test public void TestUpdateCount5(){ boolean save = userService.removeById(1509435818367836161L); System.out.println(save); }
解决数据表名和实体类名不一致问题
方法一
在实体类上添加注解输入相对应的数据表名:@TableName("表名")
@TableName("user")//绑定上数据表 public class User { }
//防止数据表字段有下划线
@TableField(value = "user_name")
方法二
application.properties 中添加配置:
#数据库中的数据表名中,如果有驼峰命名,添加这个配置可以将所有实体类名前面添加 t_ 和数据库进行匹配
mybatis-plus.global-config.db-config.table-prefix=t_
逻辑删除
用户在删除数据的时候,发现删除了可以回收。
我们可以创建一个字段,判断用户是否删除,如默认值为 0,删除后修改为 1。
如果用户发现删错了,可以进行找回将值改为0。
1、数据表添加字段
2、实体类添加属性,并添加注解: @TableLogic
@TableLogic private Integer isDelete;
3、删除测试
@Test public void MyDeleteId(){ boolean b = userService.removeByIds(Arrays.asList(1, 2, 3)); System.out.println(b); }
删除结果:
4、查询测试