5、MybatisPlus-Service层-03 -解决实体类名和数据表名不一致问题


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、查询测试

 

 

 

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM