MyBatisGX 示例工程:CRUD + 关联查询完整演示

MyBatisGX 示例工程:CRUD + 关联查询完整演示

第一步:引入依赖

xml 复制代码
<dependency>
    <groupId>com.mybatisgx</groupId>
    <artifactId>mybatisgx-spring-boot3-starter</artifactId>
    <version>0.0.4</version>
</dependency>

第二步:service代码

  • 定义查询实体
java 复制代码
@Data
@QueryEntity(User.class)
public class UserQuery extends User {

    private String nameLike;
}
  • 编写service代码
java 复制代码
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;
    @Autowired
    private RoleDao roleDao;

    @Transactional(rollbackFor = Exception.class)
    @Override
    public int add(User user) {
        this.userDao.insert(user);

        List<Role> roleList = user.getRoleList();
        this.roleDao.insertBatch(roleList);

        return 1;
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public int delete(Long id) {
        return this.userDao.deleteById(id);
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public int modify(User user) {
        return this.userDao.updateById(user);
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public User findById(Long id) {
        return this.userDao.findById(id);
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public List<User> list(UserQuery userQuery) {
        return this.userDao.findList(userQuery);
    }
}

第三步:直接调用

  • 请求:
shell 复制代码
curl -X GET "http://localhost:8080/mybatisgx-example/user/list" --data-urlencode "nameLike=管理"
  • 结果:
json 复制代码
[
  {
    "id": 1, "name": "张三",
    "roleList": [
      {
        "id": 1, "code": "ADMIN", "name": "管理员", "userList": null,
        "menuList": [
          {"id": 1, "code": "USER_MANAGE", "name": "用户管理", "roleList": null},
          {"id": 2, "code": "ROLE_MANAGE", "name": "角色管理", "roleList": null},
        ]
      }
    ]
  },
  {"id": 2, "name": "李四",
    "roleList": [
      {
        "id": 2, "code": "USER", "name": "普通用户",
        "userList": null,
        "menuList": [
          {"id": 1, "code": "USER_MANAGE", "name": "用户管理", "roleList": null}
        ]
      }
    ]
  },
  {
    "id": 3,
    "name": "王五",
    "roleList": [
      {
        "id": 3, "code": "GUEST", "name": "访客",
        "userList": null,
        "menuList": [
          {"id": 1, "code": "USER_MANAGE", "name": "用户管理", "roleList": null}
        ]
      }
    ]
  }
]
相关推荐
Conan在掘金几秒前
ArkTS 进阶之道(16):@Styles 样式复用边界——为啥样式不能当对象返
后端
Conan在掘金10 分钟前
ArkTS 进阶之道(15):@BuilderParam 组件参数化边界——为啥 @Builder 能当参数传
后端
小园子的小菜14 分钟前
Java 并发四大工具类深度解析:CountDownLatch、CyclicBarrier、Semaphore、Exchanger 原理、源码与面试考点
java·开发语言·面试
搭贝低代码17 分钟前
设备管理系统迁移改造:从手工台账到二维码数字化的实践路径
java·低代码·搭贝
前端双越老师19 分钟前
Nest.js 和 Spring Boot 为何如此像?写给前端转 Java 的同学
java·spring boot·全栈
JL1529 分钟前
Java+Go 混合架构怎么搭?收官 50 道面试题 + 学习路线
java·架构·golang
IT_陈寒35 分钟前
Redis踩了个大坑,原来DEL命令也会卡住整个实例
前端·人工智能·后端
Tattoo_Welkin40 分钟前
IDEA 中常用操作记载
java·elasticsearch·intellij-idea
音符犹如代码1 小时前
Arthas classloader + sc 实战:JVM 类加载与手动加载
java·jvm·spring boot
乐启国际旅行社有限公司1 小时前
Java线程池实战:文旅系统批量任务性能优化(团期生成/数据导出)
java·开发语言·性能优化