IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot练手项目(springboot+mp) -> 正文阅读

[Java知识库]springboot练手项目(springboot+mp)

  1. 导入相关依赖

  2. 配置连接池,连接数据库
    因为要写映射文件,所以要设置别名搜索和加载映射文件目录
    #连接池
    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/bill-manager?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
        username: root
        password: 123456
    #配置mybatis plus    
    mybatis-plus:
      type-aliases-package: com.jwt.bill.entity
      mapper-locations: classpath:/mappers/*.xml
  3. 根据数据库创建实体类
    利用@Data注解简化实体类的开发,不需要写get set方法(Lombok)
    MyBatisPlus中如果类名和表名一致,是不需要加注解的
    MyBatisPlus提供了一些注解供我们在实体类和表信息出现不对应的时候使用。

    @TableName
    实体类的类名和数据库表名不一致
    @TableId
    实体类的主键名称和表中主键名称不一致
    默认主键是通过雪花算法生成全局唯一主键
    主键自增策略@TableId(type = IdType.AUTO)
    @TableField
    实体类中的成员名称和表中字段名称不一致
    如果字段与表没有关联(排除实体类中非表字段
    使用 @TableField(exist = false) 注解


    因为查询的时候有开始时间与结束时间,我们要把时间作为条件传给账单实体类,所以我们需要在实体类中有两个瞬时属性
    @Transient注解表示当前属性为瞬时属性,跟字段没有映射,上面实体类date1和date2只3作为查询条件存在,跟表中字段没有关联

    最后还要显示类别名称,并不是显示类别id,所以还要有一个瞬时属性来记录类别名称

    bill实体类
    ?

    @Data
    @TableName(value = "bill_")
    public class Bill implements Serializable {
    
        @TableId(value = "id_",type = IdType.AUTO)
        private Long id;
    
        @TableField(value = "title_")
        private String title;
    
        @TableField(value = "bill_time_")
        private Date billTime;
    
        @TableField(value = "type_id_")
        private Long TypeId;
    
        @TableField(value = "price_")
        private Double price;
    
        @TableField(value = "explain_")
        private String explain;
    
        /**
         * 类别名称
         */
        @Transient
        @TableField(exist = false)
        private String typeName;
    
        /**
         * 开始时间
         * 用于查询
          */
        @Transient
        @TableField(exist = false)
        private Date date1;
    
        /**
         * 结束时间
         * 用于查询
         */
        @Transient
        @TableField(exist = false)
        private Date date2;
    }

    billType实体类
    ?

    @Data
    @TableName(value = "bill_type_")
    public class BillType implements Serializable {
    
        @TableId(value = "id_",type = IdType.AUTO)
        private Long id;
    
    
        @TableId(value = "name_")
        private String name;
    }
  4. dao

    需要继承BaseMapper<>,继承BaseMapper后就可以使用mp内置的方法来实现增删改查

    要在启动类中搜索接口所在的包来产生接口的代理对象
    @MapperScan(“....mapper”)

    测试的话要设置启动器(测试需要的注解)
    @RunWith(SpringRunner.class)
    @SpringBootTest

    BillMapper
    @Repository
    public interface BillMapper extends BaseMapper<Bill> {
        List<Bill> select(Bill b);
    }

    BillTypeMapper

    @Repository
    public interface BillTypeMapper extends BaseMapper<BillType> {
    }
    

  5. Service

    service调用dao内置方法实现增删改查

    BillService
    public interface BillService {
    
        //查询
        List<Bill> list(Bill b);
        //添加
        int add(Bill b);
        //根据id查询
        Bill get(Long id);
        //更新
        int update(Bill b);
        //删除
        int delete(Long id);
    }
    

    BillServiceImpl
    @Service
    public class BillServiceImpl implements BillService {
        @Autowired
        private BillMapper billMapper;
    
        @Override
        public List<Bill> list(Bill b) {
            return billMapper.select(b);
        }
    
        @Override
        public int add(Bill b) {
            return billMapper.insert(b);
        }
    
        @Override
        public Bill get(Long id) {
            return billMapper.selectById(id);
        }
    
        @Override
        public int update(Bill b) {
            return billMapper.updateById(b);
        }
    
        @Override
        public int delete(Long id) {
            return billMapper.deleteById(id);
        }
    }
    

    BillTypeService
    public interface BillTypeService {
        List<BillType> list();
    }

    BillTypeServiceImpl
    @Service
    public class BillTypeServiceImpl implements BillTypeService {
        @Autowired
        private BillTypeMapper billTypeMapper;
    
        @Override
        public List<BillType> list() {
            return billTypeMapper.selectList(null);
        }
    }
  6. Controller

    在Controller中调用service中的方法来实现增删改查业务

    看看查询的需求
    查询账单类型:生成下拉列表框
    开始时间,结束时间

    删除:利用Rest风格的请求路径,点击删除 地址栏中占位符传参

    修改:也是利用Rest风格的请求路径,点击修改?地址栏中占位符传参
    ?

    package com.jwt.bill.Controller;
    
    import com.jwt.bill.entity.Bill;
    import com.jwt.bill.entity.BillType;
    import com.jwt.bill.service.BillService;
    import com.jwt.bill.service.BillTypeService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import java.util.List;
    
    @Controller
    @RequestMapping("/bill")
    public class BillController {
        @Autowired
        private BillService billService;
    
        @Autowired
        private BillTypeService billTypeService;
    
        /**
         * 查询账单类型
         * Bill b接受页面的请求参数
         * 把查询到的结果放到ModelA中
         */
        @RequestMapping("/list")
        public String list(Bill bill, Model model){
            List<BillType> types = billTypeService.list();
            //把查询到的types存储到Model Attribute中
            model.addAttribute("types",types);
    
            //查询账单  Bill bill页面的查询条件
            List<Bill> bills = billService.list(bill);
    
            //把查询到的bills也存储到Model Attribute中
            model.addAttribute("bills",bills);
            return "bill/list";
        }
    
        /**
         * 跳到添加页面  还需要再次查询账单类型
         */
        @RequestMapping("/toAdd")
        public String toAdd(Model model){
            List<BillType> types = billTypeService.list();
            //把查询到的types存储到Model Attribute中
            model.addAttribute("types",types);
    
            return "bill/add";
        }
    
        /**
         * 添加
         * 页面请求参数 封装到
         */
        @RequestMapping("/add")
        public String add(Bill bill){
            billService.add(bill);
            //添加以后需要重定向  到首页列表
            return "redirect:/bill/list";
        }
        /**
         * 删除
         * 利用Rest风格的请求路径,点击删除 地址栏中占位符传参
         */
        @RequestMapping("/delete/{id}")
        public String delete(@PathVariable("id") Long id){
            billService.delete(id);
            //删除以后也要重定向  到首页列表
            return "redirect:/bill/list";
        }
    
        /**
         * 修改  先回显数据
         * 也是利用Rest风格的请求路径,点击删除 地址栏中占位符传参
         */
        @RequestMapping("/toUpdate/{id}")
        public String toUpdate(@PathVariable("id") Long id,Model model){
            //通过id查询到的结果  存到Model中  并且也需要生成下拉框
            List<BillType> types = billTypeService.list();
            //把查询到的types存储到Model Attribute中
            model.addAttribute("types",types);
    
            //根据id查询出来回显数据
            Bill bill = billService.get(id);
            model.addAttribute("bill",bill);
            return "/bill/update";
        }
        /**
         * 最终修改
         */
        @RequestMapping("/update")
        public String update(Bill bill){
            billService.update(bill);
            //修改以后也要重定向  到首页列表
            return "redirect:/bill/list";
        }
    }
    
  7. 实现项目页面部分
    首先拷贝资源到resources-static目录下

    模板也都需要放到resources-template下
    ?
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 12:48:23  更:2022-03-06 12:48:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:09:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码