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}
]
}
]
}
]
- 项目已经开源github:github.com/cris-xue/my...
- demo:github.com/cris-xue/my...
- 如果你感兴趣可以直接跑这个 demo