zoukankan      html  css  js  c++  java
  • 【SpringBoot】SpringBoot/MyBatis/MySql/thymeleaf/Log4j整合工程

    工程下载地址:https://files.cnblogs.com/files/xiandedanteng/MMSpringWeb20191027-1.rar

    工程目录结构如图:

    1.创建工程

    有些网文推荐用New Spring Start Project生成工程,并把MyBatis/JDBC/MySql的依赖全选上,再加上必需的spring web和thymeleaf。我试了以下发现工程创建出来后STS总是在Build中,超过半个一个小时还没完,只好作罢。

    于是从New Spring Start Project生成工程,只加上必需的spring web和thymeleaf依赖,工程自然迅速创建好了。

    2.添加依赖

    接下来在pom.xml中手动添加依赖项。具体如下:

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.hy</groupId>
        <artifactId>MMSpringWeb</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>MMSpringWeb</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.5</version>
            </dependency>
            
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.1.1</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.12</version>
            </dependency>
    
    
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </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>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    以上粗体部分是我手工填上去的。

    3.添加log4j的配置文件

    在src/main/resources下添加文件log4j.properties,内容如下:

    #Output information(higher than info) to stdout and file.info/debug/error
    log4j.rootLogger=INFO, stdout,File
    
    #MyBatis log setting
    log4j.logger.tk.mybatis.simple.mapper=TRACE
    
    #Console
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
    
    #File
    log4j.appender.File = org.apache.log4j.FileAppender
    log4j.appender.File.File = d://log4j.log
    log4j.appender.File.layout = org.apache.log4j.PatternLayout
    log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

    这一步不是关键步骤,如果跳过问题也不大。

    4.在application.properties中添加数据库和MyBatis的相关配置,内容如下:

    # MySql Database COnfigaration
    spring.datasource.url=jdbc:mysql://192.168.161.129:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
    spring.datasource.username=root
    spring.datasource.password=12345678
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
     
    # Mapper.xml files location
    mybatis.mapper-locations=classpath:mapper/*.xml
    
    # Mapper.java files package
    mybatis.type-aliases-package=com.example.demo.mapper

    MySql数据库的配置毋庸多言,一目了然。而mybatis.mapper-locations实际在src/main/resources下的mapper目录,里面放的是写sql的xml文件(XXMapper.xml); mybatis.type-aliases-package是放Mapper接口文件的类路径,XXMapper接口文件和XXMappper.xml文件是一一对应的关系。

    5.在src/main/resources/mapper中书写文件EmpMapper.xml,这个里面主要写sql语句

    <?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" >
    <mapper namespace="com.hy.csvdld.dao.EmpMapper">
    
        <select id="selectTenEmp" resultType="com.hy.csvdld.Entity.Emp">
            select id,name,age,cdate as ctime from emp order by id limit 10
        </select>
    
    </mapper>

    6.书写与EmpMapper.xml对应的接口,这种类相当于SSH时代的dao:

    package com.hy.csvdld.dao;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Mapper;
    
    import com.hy.csvdld.Entity.Emp;
    
    @Mapper
    public interface EmpMapper {
        List<Emp> selectTenEmp();
    }

    返回数据的实体类是:

    package com.hy.csvdld.Entity;
    
    import java.text.MessageFormat;
    
    public class Emp {
        private long id;
        private String name;
        private int age;
        private String ctime;
        
        public Emp() {
            
        }
        
        public Emp(String name,int age,String ctime) {
            this.name=name;
            this.age=age;
            this.ctime=ctime;
        }
        
        public String toString() {
            Object[] arr={id,name,age,ctime};
            String retval=MessageFormat.format("Employee id={0},name={1},age={2},created_datetime={3}", arr);
            return retval;
        }
        
        public long getId() {
            return id;
        }
        public void setId(long id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getCtime() {
            return ctime;
        }
        public void setCtime(String ctime) {
            this.ctime = ctime;
        }
    }

    7.书写服务类

    package com.hy.csvdld.service;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.hy.csvdld.Entity.Emp;
    import com.hy.csvdld.dao.EmpMapper;
    
    @Service
    public class EmpService {
        @Autowired
        private EmpMapper empMapper;
        
        public List<Emp> selectTenEmp(){
            return empMapper.selectTenEmp();
        }
    }

    8.书写控制器,里面通过service,再通过mapper从数据库取出数据准备传到页面上。

    package com.hy.csvdld.ctrl;
    
    import java.util.List;
    
    import org.apache.log4j.Logger;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.hy.csvdld.Entity.Emp;
    import com.hy.csvdld.service.EmpService;
    
    @Controller
    public class WebCtrl {
        private static Logger log = Logger.getLogger(WebCtrl.class);
        
        @Autowired
        EmpService empService;
        
        @RequestMapping("/")
        public String index(Model model) {
            List<Emp> ls=empService.selectTenEmp();
            log.info(ls.size());
            for(Emp emp:ls) {
                log.info(emp);
            }
            
            model.addAttribute("emps", ls);
            log.info("进入index页");
            return "index.html";
        }
    }

    9.启动类,这个类是自动生成的,不用写

    package com.hy.csvdld;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class MmSpringWebApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MmSpringWebApplication.class, args);
        }
    
    }

    10.书写页面,页面在src/main/resources/templates下,:

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Happy as larry</title>
    </head>
     
    <body>
        <h2>SpringBoot/MyBatis/MySql/thymeleaf/Log4j整合工程</h2>
        <hr/>
        <table border="1px">
            <caption>从数据库取出的员工信息</caption>
            <tr>
                <th>#</th><th>name</th><th>age</th><th>created timestamp</th>
            </tr>
            <tr th:each="emp:${emps}">
                <td><a th:text="${emp.id}"></a></td>
                <td><a th:text="${emp.name}"></a></td>
                <td><a th:text="${emp.age}"></a></td>
                <td><a th:text="${emp.ctime}"></a></td>
            </tr>
        </table>
    </body>
    </html>

    到这里就完成了,如果有没有描叙清楚的请到工程里查吧,直接从下载工程改写也是一个不错的省事办法。

    截图:

    --END-- 2019年10月27日13:47:10

  • 相关阅读:
    MyCat清单
    Nginx整合Tomcat
    Nginx安装与配置
    Spring清单
    Shiro清单
    Dubbo清单
    MyBatis清单
    查询数据库的编码
    myBatis
    面试
  • 原文地址:https://www.cnblogs.com/heyang78/p/11747332.html
Copyright © 2011-2022 走看看