JavaWeb基础知识入门-Mybatis框架的crud(一)

简介: HTTP协议 1.HTTP-概述 2.HTTP-请求协议 HTTP请求数据格式
+关注继续查看

部门管理

1.查询部门

177f3e3a2fba4e2dafe1048f23d38d1a.png

2.删除部门

8342dfd2024e47eda9e0fbddc0e84720.png

3.新增部门

faa4633667d741b6a0cdd4c2804f1131.png

797886e8068444de9bd0824f12a53dfe.png

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.分页查询

image.png

分页查询结果封装类(属性名要与前端所传属性名保持一致)

//分页查询结果封装类
@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插件,可以简洁高效的进行开发。


image.png

.分页查询(带条件)

引入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.文件上传

简介

文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。

文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。

fc6ee32689a6497b9ecd32f883692d32.png

本地存储

在服务端,接收到上传上来的文件之后,将文件存储在本地服务器磁盘中。

文件上传的实现代码

@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();
    }


07713ff9fcae437ba145fe1e19ae1ea4.png

String getOriginalFilename();//获取原始文件名

void transferTo(File dest);//将接收的文件转存到磁盘文件中

long getSize(); l/获取文件的大小,单位:字节

byte] getBytes();//获取文件内容的字节数组

Ilnputsteam getlnputStream();//获取接收到的文件内容的输入流

阿里云OSS

阿里云对象存储OSS (0bject Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。

469f58a766b9486cb7b473ebddcffe10.png

引入阿里云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.删除员工


61711e63151d44578fa3857ddef78f26.png

5.新增员工


ce1d110137d041f9802e3c1db78ca439.png

6.修改员工

查询回显


1a6d15e0ea5b4b51a8b51f689ec51a66.png

修改员工信息

aebf83e87fc14c018b1bb5f61c08fd74.png

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>

配置文件

de0b5148ea284a28aefe8240862a5665.png

86e90f1fbb77467d847c7cbf39b975f7.png

9710108fe5e24ba68aa55509b9e153c5.png


2e50440ba904430781663b0c0c76d059.png

ab90f1a2072b415bab91dc9e664d743e.png

工具类中通过get可以获取所配置的属性值


229a700b97df4fae81df282f5805d0e8.png美好的一天到此结束,下次继续努力!

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
2月前
|
Java 关系型数据库 数据库连接
MyBatis增删改查(CRUD)操作
CRUD操作指的就是增加(Create)、读取(Retrieve)、更新(Update)、删除(Delete)这四种基本数据库操作; MyBatis提供了一种简洁且灵活的方式来执行这些操作,通过配置映射文件和编写对应的SQL语句,将Java对象与数据库表进行映射和操作。 准备任务 首先,你需要在你的项目中添加MyBatis的依赖等; 创建数据库连接idea, 接下来,你需要创建一个MyBatis的配置文件(通常是一个XML文件); 注意:com.mysql.cj.jdbc.Driver是从MySQL Connector/J版本8.0开始引入的。在此版本之前,MySQL Connector/J使
32 1
|
2月前
|
Java 数据库连接 Apache
全网首发一IoTDB数据库整合MyBatis实现SpringBoot项目CRUD
最近用到IoTDB数据库,经过对一些相关文档的搜集,大概了解到了该数据库的主要应用场景和使用方法,本篇就讲一下如何利用IoTDB并结合SpringBoott和Mybatis进行项目整合。经过一番查找全网都没有一篇完整的关于该数据库采用Mybatis做持久化框架的文章,那么就由我来开辟一下先河。
|
2月前
|
SQL Java 数据库连接
Mybatis快速入门并实现CRUD操作
Mybatis快速入门并实现CRUD操作
27 0
|
3月前
|
SQL XML Java
120行代码手写一个简单的MyBatis实现简单的CRUD
不用XML只用注解 首先需要创建6个注解 SQL用于输入SQL语句
34 0
|
3月前
MyBatis-Plus 之Service CRUD 接口(二)
MyBatis-Plus 之Service CRUD 接口
25 0
|
3月前
MyBatis-Plus 之Service CRUD 接口(一)
MyBatis-Plus 之Service CRUD 接口
31 0
|
4月前
|
SQL XML 存储
Idea Mybatis插件:提高CRUD效率
将mybatis xml转成真实SQL语句、参数mock、SQL规范检查、SQL索引检查、SQL运行、SQL压测及Mybatis SQL语句扫描
669 1
Idea Mybatis插件:提高CRUD效率
|
4月前
|
Java 数据库连接 数据库
Mybatis 注解实现基本 CRUD
Mybatis 注解实现基本 CRUD
|
4月前
|
SQL Java 数据库连接
【MyBatis学习笔记 二】MyBatis基本操作CRUD及配置解析(下)
【MyBatis学习笔记 二】MyBatis基本操作CRUD及配置解析(下)
28 0
|
4月前
|
SQL XML Java
【MyBatis学习笔记 二】MyBatis基本操作CRUD及配置解析(上)
【MyBatis学习笔记 二】MyBatis基本操作CRUD及配置解析
34 0
推荐文章
更多