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}
        ]
      }
    ]
  }
]
相关推荐
我不是外星人40 分钟前
有了 Harness Engineering ,真的还需要研发工程师吗?
前端·后端·ai编程
candyTong1 小时前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
Rust研习社3 小时前
组合真的优于继承吗?为什么 Rust 和 Go 都拥抱组合舍弃继承?
后端·rust·编程语言
IT_陈寒3 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
CaffeinePro4 小时前
Pydantic深度使用:数据校验、枚举、ORM映射
后端·fastapi
Chenyiax5 小时前
从 Chat 到 Responses:OpenAI API 抽象为什么变了?
后端
MariaH5 小时前
Koa和Express的区别
后端
MariaH5 小时前
Koa框架的使用
后端
luckdewei6 小时前
那个用 passlib 做认证的新同事,上线第一天就把用户密码写进了日志
后端
ping某7 小时前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx