• SpringBoot终章(整合小型进销系统)


    在前面的章节中我们学习Spring的时候可以看到配置文件比较多,所以我们有了SpringBoot

    1. 引入依赖

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </dependency>
            <!-- 核心依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!-- 可以实现热部署,在IDEA上实现热部署还需一些额外的配置,请查阅资料 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
                <scope>runtime</scope>
            </dependency>
    
            <!-- JDBC for mysql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.32</version>
            </dependency>
    
            <!-- mybatis -->
            <!--mybatis-->
            <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.1</version>
            </dependency>
    
            <!--fastJson-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.12</version>
            </dependency>
            <!--druid-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.18</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.1</version>
            </dependency>
            <!--thymeleaf  新的模板引擎,比jsp要出色-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <!--jdbc-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
            <!-- 分页插件 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.3</version>
            </dependency>
        </dependencies>

    2.配置application.properties文件

    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql:///invoicingsystem
    spring.datasource.username=root
    spring.datasource.password=123456
    
    
    mybais.mapper-locations=classpath:mapper/*.xml
    mybatis.type-aliases-package=com.zn.entity
    
    #映射级别
    mybatis.configuration.auto-mapping-behavior=full
    
    
    #Spring Data JPA配置
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.show-sql=true
    spring.jackson.serialization.indent-output=true
    spring.jpa.database=mysql
    
    spring.main.allow-bean-definition-overriding=true

    3.配置页面

    在前面的页面中我们使用的都是jsp页面,但是在这里我们是使用html页面的并且存放到templates目录下

     4.配置Dao接口

    @Repository
    public interface ProductDao {
        //查库存
        public List<Product> getList();
        public Product getname(@Param("pid") Integer pid);
    }
    @Repository
    public interface SaleDao {
        //查询
        public List<Sale> getsale(@Param("num") Integer num);
        //绑定下拉框
        public List<Product> getList();
        //添加
        public int addsale(Sale sale);
    }
    @Repository
    public interface UserDao {
        //登录的方法
        public User login(User user);
    }

    5.配置Dao.xml文件

    product 

    <?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">
    <!--namespace需要指向接口全路径-->
    <mapper namespace="com.zn.dao.ProductDao">
    
        <select id="getList" resultType="com.zn.entity.Product">
            select * from product
        </select>
    
        <select id="getname" resultType="com.zn.entity.Product">
            select * from product where pid=#{pid}
        </select>
    </mapper>

    sale

    <?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">
    <!--namespace需要指向接口全路径-->
    <mapper namespace="com.zn.dao.SaleDao">
        <resultMap id="getAllSales" type="com.zn.entity.Sale">
            <id property="sid" column="sid"></id>
            <result property="quantity" column="quantity"></result>
            <result property="price" column="price"></result>
            <result column="totalPrice" property="totalPrice"></result>
            <result property="saleDate" column="saleDate"></result>
            <result column="userId" property="userId"></result>
            <result property="productId" column="productId"></result>
            <association property="product" javaType="com.zn.entity.Product">
                <id column="pid" property="pid"></id>
                <result column="productName" property="productName"></result>
            </association>
            <association property="user" javaType="com.zn.entity.User">
                <id property="uid" column="uid"></id>
                <result column="userName" property="userName"></result>
            </association>
        </resultMap>
    
        <select id="getsale" resultMap="getAllSales">
            select * from product as p,sale as s,users as u where p.pid=s.productId and u.uid=s.userId
            <if test="num==1">
                order by s.totalPrice DESC
            </if>
            <if test="num==2">
                order by s.saleDate DESC
            </if>
        </select>
    
        <select id="getList" resultType="com.zn.entity.Product">
            select * from product
        </select>
    
        <insert id="addsale">
            INSERT INTO sale(price,quantity,totalPrice,saleDate,userId,productId)
             VALUE(#{price},#{quantity},#{totalPrice},#{saleDate},#{userId},#{productId})
        </insert>
    </mapper>

    user

    <?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">
    <!--namespace需要指向接口全路径-->
    <mapper namespace="com.zn.dao.UserDao">
    
        <select id="login" resultType="com.zn.entity.User">
            select * from users where userName=#{userName} and password=#{password}
        </select>
    </mapper>

    6.配置Service层

    product

    public interface ProductService {
        //查库存
        public List<Product> getList();
        public Product getname(Integer pid);
    }

    sale

    public interface SaleService {
        //查询
        public PageInfo<Sale> getsale(@Param("num") Integer num, @Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize);
        //绑定下拉框
        public List<Product> getList();
        //添加
        public int addsale(Sale sale);
    }

    user

    public interface UserService {
        //登录的方法
        public User login(User user);
    }

    7.配置serviceimpl层

    product

    package com.zn.service.impl;
    
    import com.zn.dao.ProductDao;
    import com.zn.entity.Product;
    import com.zn.service.ProductService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service("ProductService")
    public class ProductServiceImpl implements ProductService {
        @Autowired
        ProductDao productDao;
    
        @Override
        public List<Product> getList() {
            List<Product> list = productDao.getList();
            return list;
        }
    
        @Override
        public Product getname(Integer pid) {
            Product getname = productDao.getname(pid);
            return getname;
        }
    }

    sale

    package com.zn.service.impl;
    
    import com.github.pagehelper.Page;
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.zn.dao.ProductDao;
    import com.zn.dao.SaleDao;
    import com.zn.entity.Product;
    import com.zn.entity.Sale;
    import com.zn.service.SaleService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service("SaleService")
    public class SaleServiceImpl implements SaleService {
    
        @Autowired
        SaleDao saleDao;
        @Autowired
        ProductDao productDao;
    
    
        @Override
        public PageInfo<Sale> getsale(Integer num, Integer pageNum, Integer pageSize) {
            Page<Sale> page = PageHelper.startPage(pageNum, pageSize);
            List<Sale> getsale = saleDao.getsale(num);
            return page.toPageInfo();
        }
    
        @Override
        public List<Product> getList() {
            List<Product> list = productDao.getList();
            return list;
        }
    
        @Override
        public int addsale(Sale sale) {
            int addsale = saleDao.addsale(sale);
            return addsale;
        }
    
    }

    user

    package com.zn.service.impl;
    
    import com.zn.dao.UserDao;
    import com.zn.entity.User;
    import com.zn.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service("UserService")
    public class UserServiceImpl implements UserService {
    
        @Autowired
        UserDao userDao;
    
        @Override
        public User login(User user) {
            return userDao.login(user);
        }
    }

    8.配置Controller控制器

    product

    package com.zn.controller;
    
    import com.zn.entity.Product;
    import com.zn.service.ProductService;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    @Controller
    @RequestMapping("/product")
    public class ProductController {
    
        @Resource(name = "ProductService")
        ProductService productService;
    
        @RequestMapping("/getproduct")
        @ResponseBody
        public Object getProductList(){
            System.out.println("库存列表绑定");
            List<Product> proList = productService.getList();
            return proList;
    
        }
    
        /*根据id查询库存*/
        @RequestMapping("/getpr")
        @ResponseBody
        public Object getProduct(Integer pid){
            System.out.println("库存详情");
            Product proLists = productService.getname(pid);
            return proLists;
    
        }
    
    }

    sale

    package com.zn.controller;
    
    import com.github.pagehelper.PageInfo;
    import com.zn.entity.Product;
    import com.zn.entity.Sale;
    import com.zn.entity.User;
    import com.zn.service.SaleService;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import java.util.Date;
    import java.util.List;
    
    @Controller
    @RequestMapping("/sale")
    public class SaleController {
        @Resource(name = "SaleService")
        SaleService saleService;
    
        @RequestMapping("/getsale")
        @ResponseBody
        public Object getsale(Integer num, Integer pageNum, Integer pageSize){
            System.out.println("进了吗??");
            PageInfo<Sale> getsale = saleService.getsale(num, pageNum + 1, 5);
            return getsale;
        }
    
        @RequestMapping("/getlist")
        @ResponseBody
        public Object getlist(){
            System.out.println("绑定下拉框");
            List<Product> list = saleService.getList();
            return list;
        }
    
        @RequestMapping("/addsale")
        @ResponseBody
        public ModelAndView addsale(Sale sale, HttpServletRequest request, ModelAndView mv){
            if (sale!=null){
                Double totalPrice=sale.getPrice() * sale.getQuantity();
                sale.setTotalPrice(totalPrice);
                sale.setSaleDate(new Date());
                User login = (User) request.getSession().getAttribute("login");
                sale.setUserId(login.getUid());
                int addsale = saleService.addsale(sale);
                if (addsale>0){
                    System.out.println("添加成功!");
                    mv.setViewName("saleList");
                }else{
                    System.out.println("添加失败!");
                    mv.setViewName("prodectAdd");
                }
            }
            return mv;
        }
    }

    user

    package com.zn.controller;
    
    import com.zn.entity.User;
    import com.zn.service.UserService;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @Controller
    @RequestMapping(value = "/user")
    public class UserController {
        @Resource(name = "UserService")
        UserService userService;
        @RequestMapping("/login")
        @ResponseBody
        public ModelAndView login(User user, HttpServletRequest request, HttpServletResponse response, ModelAndView modelAndView){
            User login = userService.login(user);
            if (login!=null){
                System.out.println("登陆成功!");
                request.getSession().setAttribute("login",login);
                modelAndView.setViewName("index");
            }else {
                modelAndView.setViewName("login");
            }
            return modelAndView;
        }
    
        @RequestMapping("/remover")
        private String loginOut(HttpServletRequest request, HttpServletResponse response) {
            request.getSession().removeAttribute("login");
            return "login";
        }
    
        /*转发登陆页面*/
        @RequestMapping("/goLogin")
        public Object goLogin(){
            return "login";
        }
    
        /*转发查询页面*/
        @RequestMapping("leList")
        public Object saleList(){
            return "saleList";
        }
    
        /*转发销售页面*/
        @RequestMapping("/prodectAdd")
        public Object productAdd(){
            return "prodectAdd";
        }
    
        /*转发查看库存页面*/
        @RequestMapping("/prview")
        public Object prview(){
            return "prview";
        }
    }

    9.开启SpringbootInvoicingApplication

     

    开启后直接访问控制器写入的路径

  • 相关阅读:
    Windows核心编程(笔记11) 第十三章 Windows内存体系结构 四
    源码网站推荐 四
    程序员应知——破窗与童子军军规 四
    warning LNK4098 VC开发中遇到的问题 四
    各种系统架构图及其简介 四
    Windows核心编程(笔记10) 第十一章 Windows线程池 第十二章 纤程 四
    Windows核心编程(笔记12) 第十四章 探索虚拟内存 第十五章 在应用程序中使用虚拟内存 四
    Perl、PHP、ASP、JSP技术比较 四
    #pragma 预处理指令详解 四
    实战剖析三层架构 四
  • 原文地址:https://www.cnblogs.com/ws1149939228/p/11996100.html
Copyright © 2020-2023  润新知