部门管理
1.查询部门
2.删除部门
3.新增部门
DeptMapper
@Mapper public interface DeptMapper { //查询全部部门数据 @Select("select * from dept") List<Dept> list(); //根据主键id删除 @Delete("delete from dept where id=#{id}") void deleteById(Integer id); //新增部门 @Insert("insert into dept (name,create_time,update_time) values (#{name},#{createTime},#{updateTime})") void insert(Dept dept); //根据id查询 @Select("select * from dept where id=#{id}") Dept getById(Integer id); //修改部门信息 @Update("update dept set name=#{name},update_time=#{updateTime} where id=#{id}") void update(Dept dept); }
DeptService
public interface DeptService { //查询全部部门信息 List<Dept> list(); //删除部门 void delete(Integer id); //新增部门 void add(Dept dept); //根据id查询 Dept getById(Integer id); //修改部门 void update(Dept dept); }
DeptServiceimpl
@Service public class DeptServiceImpl implements DeptService { @Autowired private DeptMapper deptMapper; //查询部门信息 @Override public List<Dept> list() { return deptMapper.list(); } //删除部门信息 @Override public void delete(Integer id) { deptMapper.deleteById(id); } //新增部门 @Override public void add(Dept dept) { dept.setCreateTime(LocalDateTime.now()); dept.setUpdateTime(LocalDateTime.now()); deptMapper.insert(dept); } //根据id查询部门 @Override public Dept getById(Integer id) { return deptMapper.getById(id); } //修改部门信息 @Override public void update(Dept dept) { dept.setUpdateTime(LocalDateTime.now()); deptMapper.update(dept); }
DeptController
//部门管理 @Slf4j @RestController @RequestMapping("/depts") public class DeptController { @Autowired private DeptService deptService; // 查询全部部门的数据 @GetMapping public Result list() { log.info("查询全部部门数据"); //调用service查询部门数据 List<Dept> deptList =deptService.list(); return Result.success(deptList); } //删除部门 @DeleteMapping("/{id}") public Result delete(@PathVariable Integer id){ deptService.delete(id); return Result.success(); } //新增部门· @PostMapping public Result add(@RequestBody Dept dept){ deptService.add(dept); return Result.success(); } //根据id查询部门信息 @GetMapping("/{id}") public Result getById(@PathVariable Integer id){ Dept dept=deptService.getById(id); return Result.success(dept); } //修改部门信息 @PutMapping public Result update(@RequestBody Dept dept){ deptService.update(dept); return Result.success(); }
员工管理
1.分页查询
分页查询结果封装类(属性名要与前端所传属性名保持一致)
//分页查询结果封装类 @Data @NoArgsConstructor @AllArgsConstructor public class PageBean { private Long total;//总记录数 private List rows;//数据列表 }
Empcontroller
@Slf4j @RestController @RequestMapping("/emps") public class EmpController { @Autowired private EmpService empService; @GetMapping public Result page(@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer pageSize){ log.info("分页查询{},{}",page,pageSize); //调用service分页查询 PageBean pageBean =empService.page(page,pageSize); return Result.success(pageBean); }
Empservice
public interface EmpService { PageBean page(Integer page, Integer pageSize); }
EmpServiceimpl
@Service public class EmpServiceImpl implements EmpService { @Autowired private EmpMapper empMapper; @Override public PageBean page(Integer page, Integer pageSize) { //获取总记录数 Long count= empMapper.count(); //1获取分页查询的结果列表 Integer start=(page-1)*pageSize; List<Emp> empList=empMapper.page(start,pageSize); //封装pagebean对象 PageBean pageBean=new PageBean(count,empList); return pageBean; }
EmpMapper
@Mapper public interface EmpMapper { //查询总记录数 @Select("select count(*) from emp") public Long count(); //分页查询 获取列表数据 @Select("select * from emp limit #{start},#{pageSize}") public List<Emp> page(Integer start,Integer pageSize); }
在使用原始方法时会发现,分页查询步骤固定,代码繁琐,而Mybatis有专门的分页查询PageHelper插件,可以简洁高效的进行开发。
.分页查询(带条件)
引入pagehelper插件依赖
< dependency>
< groupId>com.github.pagehelper< /groupId>
< artifactId>pagehelper-spring-boot-starter< /artifactId>
< version>1.4.2< /version>
< /dependency>
EmpCOntroller
@Autowired private EmpService empService; @GetMapping public Result page(@RequestParam(defaultValue = "10") Integer page, @RequestParam(defaultValue = "10") Integer pageSize, String name,Short gender, @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){ log.info("分页查询{},{},{},{},{},{}",page,pageSize,name,gender,begin,end); //调用service分页查询 PageBean pageBean =empService.page(page,pageSize,name,gender,begin,end); return Result.success(pageBean); }
EmpService
//分页条件查询 PageBean page(Integer page, Integer pageSize,String name,Short gender, LocalDate begin,LocalDate end);
EmpServiceImpl
@Override public PageBean page(Integer page,Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) { PageHelper.startPage(page,pageSize); List<Emp> empList = empMapper.list(name,gender,begin,end); Page<Emp> p=(Page<Emp>) empList; //封装pagebean对象 PageBean pageBean=new PageBean(p.getTotal(),p.getResult()); return pageBean; }
Empmaapper.java
//条件查询 //@Select("select * from emp") public List<Emp> list(String name,Short gender, LocalDate begin,LocalDate end);
Empmaapper.xml
<select id="list" resultType="com.itheima.pojo.Emp"> select id, username, password,name,gender,image,job,entrydate, dept_id as deptId, create_time as createTime, update_time as updateTime from emp <where> <if test="name != null and name != ''"> name like concat('%',#{name},'%') </if> <if test="gender != null"> and gender = #{gender} </if> <if test="begin != null and end != null"> and entrydate between #{begin} and #{end} </if> </where> order by update_time desc </select>
3.文件上传
简介
文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。
文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。
本地存储
在服务端,接收到上传上来的文件之后,将文件存储在本地服务器磁盘中。
文件上传的实现代码
@Slf4j @RestController public class UploadController { @PostMapping("/upload") public Result upload(String username, Integer age, MultipartFile image) throws Exception { log.info("文件上传:{},{},{}",username,age,image); //获取原始文件名 String originalFilename = image.getOriginalFilename(); //构造唯一文件名 不能重复uuid String extname=originalFilename.substring(originalFilename.lastIndexOf(".")); //拼接新名字 String newfilename= UUID.randomUUID().toString()+extname; log.info("新文件名,{}",newfilename); //将文件存储在服务器磁盘目录中 image.transferTo(new File("C:\\Users\\86178\\Desktop\\瑞吉外卖资料\\瑞吉外卖项目\\资料\\图片资源\\"+newfilename)); return Result.success(); }
String getOriginalFilename();//获取原始文件名
void transferTo(File dest);//将接收的文件转存到磁盘文件中
long getSize(); l/获取文件的大小,单位:字节
byte] getBytes();//获取文件内容的字节数组
Ilnputsteam getlnputStream();//获取接收到的文件内容的输入流
阿里云OSS
阿里云对象存储OSS (0bject Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。
引入阿里云AliOSSUtils工具类
/** * 阿里云 OSS 工具类 */ @Component public class AliOSSUtils { private String endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; private String accessKeyId = "***********"; private String accessKeySecret = "************"; private String bucketName = "hmleadnews-tlias"; /** * * * 实现上传图片到OSS */ public String upload(MultipartFile file) throws IOException { // 获取上传的文件的输入流 InputStream inputStream = file.getInputStream(); // 避免文件覆盖 String originalFilename = file.getOriginalFilename(); String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf(".")); //上传文件到 OSS OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); ossClient.putObject(bucketName, fileName, inputStream); //文件访问路径 String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName; // 关闭ossClient ossClient.shutdown(); return url;// 把上传到oss的路径返回 } }
文件上传和下载的实现UploadController
@Slf4j @RestController public class UploadController { @Autowired private AliOSSUtils aliOSSUtils; @PostMapping("/upload") public Result upload(MultipartFile image) throws IOException { log.info("文件上传, 文件名: {}", image.getOriginalFilename()); //调用阿里云OSS工具类进行文件上传 String url = aliOSSUtils.upload(image); log.info("文件上传完成,文件访问的url: {}", url); return Result.success(url); } }
4.删除员工
5.新增员工
6.修改员工
查询回显
修改员工信息
EmpControoler
//删除员工 @DeleteMapping("/{ids}") public Result delete(@PathVariable List<Integer> ids){ log.info("批量删除{}",ids); empService.delete(ids); return Result.success(); } //新增员工 @PostMapping public Result save(@RequestBody Emp emp){ log.info("新增员工{}",emp); empService.save(emp); return Result.success(); } //根据id查询员工 @GetMapping("/{id}") public Result getById(@PathVariable Integer id){ log.info("根据id查询员工信息,{}",id); Emp emp=empService.getById(id); return Result.success(emp); } //修改部门信息 @PutMapping public Result update(@RequestBody Emp emp){ log.info("更新员工信息,{}",emp); empService.update(emp); return Result.success(); }
EmpService
//批量删除 void delete(List<Integer> ids); //新增员工 void save(Emp emp); //根据id查询 Emp getById(Integer id); //修改员工信息 void update(Emp emp);
EmpServceImpl
//删除员工 @Override public void delete(List<Integer> ids) { empMapper.delete(ids); } //新增员工信息 @Override public void save(Emp emp) { emp.setCreateTime(LocalDateTime.now()); emp.setUpdateTime(LocalDateTime.now()); empMapper.insert(emp); } //根据id查询 @Override public Emp getById(Integer id) { return empMapper.getById(id); } //修改员工信息 @Override public void update(Emp emp) { emp.setUpdateTime(LocalDateTime.now()); empMapper.update(emp); }
EmpMapper.java
//批量删除 void delete(List<Integer> ids); //新增员工信息 @Insert("insert into emp (username,name,gender,image,job,entrydate,dept_id,create_time,update_time)" + "values(#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})") void insert(Emp emp); //根据id查询 @Select("select * from emp where id=#{id}") Emp getById(Integer id); //修改员工信息 void update(Emp emp);
EmpMapper.xml
<!--批量删除--> <delete id="delete"> delete from emp where id in <foreach collection="ids" item="id" separator="," open="(" close=")">#{id}</foreach> </delete> <!-- 修改员工信息--> <update id="update"> update emp <set> <if test="username!=null and username!=''">username=#{username},</if> <if test="password!=null and password!=''">password=#{password},</if> <if test="name!=null and name!=''">name=#{name},</if> <if test="gender!=null">gender=#{gender},</if> <if test="image!=null and image!=''">image=#{image},</if> <if test="job!=null">job=#{job},</if> <if test="entrydate!=null">entrydate=#{entrydate},</if> <if test="deptId!=null">dept_id=#{deptId},</if> <if test="updateTime!=null">update_time=#{updateTime}</if> </set> where id=#{id} </update>
配置文件
工具类中通过get可以获取所配置的属性值
美好的一天到此结束,下次继续努力!