ref title fetch后台api
分页属性,pagination 要差几条?pagelimit
在api中写一个饭方法,vue中用用他
vue.cinfig.js中配置别名
nacos微服务
实体类要继承basedata(封装了公共数据)
控制器autowired,getmapping(api下的文件)
反映pageinfo
dao借口继承公司的借口mapper左脚好类,类型
service,写个实现它
autowired注入dao
override
前端
①views中写一个组件:table标签中ref ,title,:fetch-api=“fetchUsers”
fetchUsers == 在data中定义==并且需要
import { fetchUsers, removeUsers, resetPass } from '@/api/authority/user'
②在api文件下authority下的user.js
import http from '@/utils/http'
export function fetchUsers(query){
return http.get('/api/users', {
params: query
})
}
后端
③controller中写一个控制器SysUserController
控制器 (Controller):
使用 @RestController 注解来定义一个 RESTful 控制器。
使用 @Autowired 注解来自动注入其他组件(如服务)到控制器中。
使用 @GetMapping 注解来映射特定的 HTTP GET 请求到对应的处理方法。
通常,控制器会调用服务层的方法来处理业务逻辑,并将处理结果返回给客户端。
@RestController
public class SysUserController extends BaseController {
注入服务等:
@Autowired
private SysUserService sysUserService;
@GetMapping("/api/users/all") ***调用的是前端api文件下面的js文件中的api***
public List<SysUser> fetchAll() {
return sysUserService.fetchAll();
}
@GetMapping("/api/users")
public PageInfo<SysUser> fetch(SysUser sysUser) {
return sysUserService.fetch(sysUser); ***调用服务的方法***
}
④service中写一个接口SysUserService
服务 (Service):
使用 @Service 注解来定义一个服务组件。
服务层通常包含业务逻辑,并且可以访问数据访问对象(DAO)。
服务层可以通过 @Autowired 注解来注入 DAO 层。
服务层的方法可能会被控制器调用,并且可能会返回数据或视图模型,如 PageInfo,这是一个分页信息的包装类,通常用于返回分页数据。
@Service
public interface SysUserService {
List<SysUser> fetchAll();
PageInfo<SysUser> fetch(SysUser sysUser); ***接口中定义方法***
一些方法
再写一些接口SysUserServiceImpl实现它
@Service
public class SysUserServiceImpl extends BaseService implements SysUserService {
@Autowired **注入dao接口**
private SysUserDao sysUserDao;
@Autowired
private SysRoleDao sysRoleDao;
@Value("${app.authority.default-password:666666}")
private String defaultPassword;
@Override
public List<SysUser> fetchAll() {
return sysUserDao.selectAll();
}
@Override ***具体实现的方法***
public PageInfo<SysUser> fetch(SysUser sysUser) {
return MybatisUtils.page(sysUser, sysUserDao, new ExampleCriteria() {
@Override
public void initCriteria(Example.Criteria criteria) {
/*if (!StringUtils.isEmpty(sysUser.getDeptId())) {
criteria.andEqualTo("deptId", sysUser.getDeptId());
}*/
if (!StringUtils.isEmpty(sysUser.getDeptId())) {
criteria.andEqualTo("deptId", sysUser.getDeptId());
}
criteria.andEqualTo("status", UserStatus.NORMAL.getCode());
if (!StringUtils.isEmpty(sysUser.getFuzzy())) {
criteria.andLike("id", "%" + sysUser.getFuzzy() + "%");
criteria.orLike("userId", "%" + sysUser.getFuzzy() + "%");
//criteria.orLike("avatar", "%" + fuzzy + "%");
criteria.orLike("name", "%" + sysUser.getFuzzy() + "%");
} else {
/*if (!StringUtils.isEmpty(sysUser.getId())) {
criteria.andEqualTo("id", sysUser.getId());
}*/
if (!StringUtils.isEmpty(sysUser.getUserId())) {
criteria.andEqualTo("userId", sysUser.getUserId());
}
if (!StringUtils.isEmpty(sysUser.getName())) {
criteria.andLike("name", "%" + sysUser.getName() + "%");
}
if (!StringUtils.isEmpty(sysUser.getStatus())) {
criteria.andEqualTo("status", sysUser.getStatus());
}
}
}
});
}
⑤在dao中写一个SysUserDao接口
数据访问对象 (DAO):
使用 @Mapper 注解来定义一个 DAO 接口,它通常继承自某个公司或项目提供的 DAO 接口。
DAO 接口使用泛型来指定操作的实体类和返回的实体类。
DAO 接口中的方法通常用来与数据库交互,执行 CRUD 操作。
DAO 接口的实现类通常由 MyBatis 等持久层框架自动生成,这些实现类通常位于与接口同名的包中。
@Repository
public interface SysUserDao extends Mapper<SysUser> {
Integer selectId();
一些方法
⑥src/main/resources/mapping.oa文件下面有着许多xml文件
写一个SysUserMapper.xml,里面写了sql语句,其中id就是上面的方法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bestvike.oa.dao.SysUserDao">
<select id="selectId" resultType="integer">
<![CDATA[
select IFNULL(max(cast(id as SIGNED INTEGER)), 0) + 1
from sys_user
]]>
</select>
⑦在data中定义实体类要继承BaseData
package com.bestvike.oa.data;
import com.bestvike.commons.entity.BaseData;
import com.bestvike.commons.utils.ConvertUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;
@Entity
public class SysAuthority extends BaseData implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String id;
private String roleId;
@JsonIgnore
private String permissions;
@Transient
private Map<String, List<String>> routes;
public String getId() {
return id;
}
⑧在后端中resources有一个routes.json文件
里面定义了路由
[
{
"path": "/authority",
"alwaysShow": true,
"component": "Layout",
"meta": {
"title": "权限管理",
"icon": "authority"
},
"children": [
{
"path": "users",
"component": "authority/user",
"name": "ListUser",
"meta": {
"title": "用户管理"
},
"authority": {
"urls": [
"GET:/api/users",
"PUT:/api/users",
"GET:/api/users/{id}/roles",
"PUT:/api/users/{id}/roles",
"PUT:/api/users/{id}/password/reset"
]
}
},