(1)可以在启动类上加@MapperScan()
(2)可以创建一个配置类加@MapperScan()
(1)创建vo类,封装条件值
(2)编写Controller:获取条件对象以及分页数据(当前页,每页记录数)
(1)全局异常:定义一个异常处理类加上注解@ControllerAdvice
(2)自定义异常:
① 自定义一个异常类YyghException,继承RuntimeException,并在父类属性基础上添加了一个属性code(共包含message和code两个属性),并定义了两个构造器;
② 在上面(1)中的异常处理类中,添加一个新的方法来处理YyghException;
③ 业务逻辑中,将会出现异常的代码部分try、catch,抛出一个new YyghException(“失败”, 201)。
(1)created方法:在页面渲染之前执行
(2)mounted方法:在页面渲染之后执行
(1)JavaScript运行环境
(2)模拟服务器效果
(1)后端开发:对象与对象之间调用
(2)前端开发:js之间的调用
(1)DictServiceImpl中无需注入DictMapper,因为它继承了ServiceImpl,ServiceImpl中有
protected M baseMapper
所以直接直接调用baseMapper即可
(2)实体类Dict中有一个与数据库表中不对应的字段
@ApiModelProperty(value = "是否包含子节点")
@TableField(exist = false)
private boolean hasChildren
(3)DictServiceImpl里两个方法
//根据数据id查询子数据列表
@Override
public List<Dict> findChildData(Long id) {
QueryWrapper<Dict> wrapper = new QueryWrapper<>();
wrapper.eq("parent_id", id);
List<Dict> dictList = baseMapper.selectList(wrapper);
//向dictList集合中每个dict对象设置hasChildren
for (Dict dict : dictList) {
Long dictId = dict.getId();
boolean isChild = this.isChildren(dictId);
dict.setHasChildren(isChild );
}
return dictList;
}
//判断该id下面是否有子节点
@Override
public boolean isChildren(Long id)
① 实体类
@Data
public class UserData {
@ExcelProperty("用户编号", index = 0)
private int uid;
@ExcelProperty("用户名称", index = 1)
private String username;
}
② 主方法
List<UserData> list = new ArrayList<>();
//......list中添加UserData对象
EasyExcel.write(fileName, UserData.class).sheet("用户信息").doWrite(list);
① 监听器
public class ExcelListener extends AnalysisEventListener<UserData> {
//一行一行读取excel内容,从第二行开始读,userData就是数据
@Override
public void invoke(UserData userData, AnalysisContext analysisContext) {}
//headMap是表头信息
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {}
//读取之后执行
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {}
}
② 主方法
//读取文件路径
String fileName = "D:\\excel\\01.xlsx";
//调用方法实现读取操作
EasyExcel.read(fileName, UserData.class, new ExcelListener()).sheet().doRead();
① 设置下载信息
response.setContextType(...)
response.setCharacterEncoding(...)
response.setHead(...)
② 查询数据库
③ 调用方法进行写操作
EasyExcel.write(response.getOutPutStream(), DictEeVo.class)).sheet("...").doWrite(dictEeVoList);
④ 前端按钮上绑定事件,并写exportData方法
EasyExcel.read(file.getInPutStream(), DictEeVo.class, new DictListener(baseMapper)).sheet().doRead();
① 自定义key的规则
② 设置RedisTemplate规则(类型转换、序列化等)
③ 设置CacheManage缓存规则(数据有效时间、乱码处理等)
spring.data.mongodb.uri=mongodb://192.168.44.165:27017/test
虚拟机IP地址或者本地IP地址+端口号+数据库名字
private MongoTemplate mongoTemplate;
//添加操作
mongoTemplate.insert(user)
//查询所有
mongoTemplate.findAll(User.class)
//根据id查询
mongoTemplate.findById("HD2I3984EFJKF49JTL3", User.class)
//条件查询
Query query = new Query(...);
mongoTemplate.find(query, User.class);
//模糊查询
Pattern pattern = Pattern.compile(...);
Query query = new Query(..., pattern);
mongoTemplate.find(query, User.class);
//分页条件查询
int pageNo = 1; //当前页
int pageSize = 3; //每页显示记录数
Query query = new Query(...);
long count = mongoTemplate.count(query, User.class); //查询总记录数
//该页显示的记录
List<User> users = mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);
//修改操作
//先根据id查
User user = mongoTemplate.findById("UED293RJOWEJDIF09843", User.class);
//设置修改值
user.setName("new name");
user.setAge(25);
Query query = new Query(Criteria...);
Update update = new Update();
update.set("name", user.getName());
update.set("age", user.getAge());
UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);
long modifiedCount = upsert.getModifiedCount(); //影响行数
//删除操作
mongoTemplate.remove(query, User.class);
public interface UserRepository extends MongoRepository<User, String> {}
private UserRepository userRepository ;
//Impl实现类中的方法
public void updateStatus(String id, Integer status) {
//根据id查询医院信息
Hospital hospital = hospitalRepository.findById(id).get();
//设置修改的值
hospital.setStatus(status);
hospital.setUpdateTime(new Date());
hospitalRepository.save(hospital);
}
//科室实体类
public class DepartmentVo {
//@ApiModelProperty(value = "科室编号")
private String depcode;
//@ApiModelProperty(value = "科室名称")
private String depname;
//@ApiModelProperty(value = "下级节点")
private List<DepartmentVo> children;
}