Spring boot微信点餐系统学习笔记

说起java,大学的时候自学了两个月就放弃了,转而学习C++,现在毕业才发现很多好的想法,从策划到具体实现,都要根据自身能力来挑选框架,进而学习语言,熟练使用C++后去学习其他的语言那才是轻车熟路,基本上两个月就能掌握,毕竟事物是普遍存在联系性的。

学习Spring Boot先要从Spring MVC说起,刚开始接触spring mvc,个人赶紧它对XML的依赖太大,然而,配置XML是一件痛苦的事,对于我来说。boot是最佳选择,干净利落,让人专注于业务的逻辑现实,而不用写一堆配置。一堆XML配置带来的问题就是后期难以维护,毕竟XML需要耐心去看,而且大部分时间里,你几乎都是在写XML,意义何在?

技术栈:spring boot + vue + Hibernate + maven + mysql 

先从pom文件开始:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.leekin</groupId>
    <artifactId>sell</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>sell</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <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>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.3.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

其他的不做介绍,都是常用组件,这里用到了lombok,他的作用在于写数据库映射类的时候只要加入@Data注解,就可以不用写getter和setter方法。

另外一个是log4j日志系统,logback日志系统能够将日志写入到文件,一下是我的配置,将警告和error分开写入以及一些规则的配置(文件名很重要logback-spring.xml):

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout>
            <pattern>
                %d - %msg%n
            </pattern>
        </layout>
    </appender>

    <!--运行日志配置项-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch><!--命中则拦截-->
            <onMismatch>ACCEPT</onMismatch><!--没有命中则使用该条规则-->
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件路径-->
            <fileNamePattern>D:/DevelopFiles/SpringMVC/sell/SellLog/sell-info-%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <!--程序错误日志配置项-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略:每一天都创建一个文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件路径-->
            <fileNamePattern>D:/DevelopFiles/SpringMVC/sell/SellLog/sell-error-%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>
<!--拦截的级别是info,级别分为debug,info,error-->
<root level="info"> <appender-ref ref="consoleLog" /> <appender-ref ref="fileInfoLog"/> <appender-ref ref="fileErrorLog"/> </root> </configuration>

一切准备工作完成,开始设计数据库,对于新手来说这是一个痛苦的过程,写sql语句也要十分细心,没耐心就用navicat来生成。

数据库ER图:

Spring boot微信点餐系统学习笔记

2 more column是create_time和update_time。

数据库设计完毕后开始写业务逻辑。

众所周知,数据库映射类是一个强大的功能,数据库表名对应类名称,属性对应字段名称,加入@Data注解省去几十行代码,对属性的操作就是对字段内数据的增删改,这种持久化操作很强大,Hibernate大法好,省去了写sql语句。让人更能专注于业务逻辑的开发,而不用维护sql语句去了。

Spring boot微信点餐系统学习笔记

上一篇:小北微信小程序之小白教程系列之 -- 样式(WXSS)


下一篇:PyCharm快速插入当前时间和日期