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}
        ]
      }
    ]
  }
]
相关推荐
脚本自动化开发3 小时前
柔光屏平板怎么选?华为 MatePad Air Z 柔光版学
后端
程序猿DD4 小时前
OctaFuse 2.19.0:重做管理后台界面与交互,模型目录同步更新
后端
金銀銅鐵4 小时前
带您看懂字节码指令(一):一帧里有什么
java·后端·ai编程
码事漫谈5 小时前
Agent 测评是什么?大白话讲一讲
后端
皮皮林5516 小时前
在 IDEA 里斗个地主不过分吧!
后端
nice_lcj5206 小时前
【从零理解 Spring AI · 14】RAG 的四个环节:加载、切分、向量化、检索
java·spring boot·embedding·向量数据库·rag·spring ai·ai应用开发
SomeOtherTime6 小时前
Rust所有权(AI回答)
开发语言·后端·rust
程序员cxuan8 小时前
离谱,AI 大佬顺手搓了个 YouTube ,而我顺手给他搓了个中文插件
人工智能·后端·程序员
学长毕设8 小时前
基于springboot科创竞赛信息平台-附源码
java·spring boot·后端
深蓝AI8 小时前
Gemini Decisions API 来了:一次前向打分取代逐字解码,校准误差 0.0250 才是 agent 分支调用的真门槛
人工智能·后端