springboot整合mybatis及thymeleaf

tech2022-07-13  181

springboot整合mybatis及thymeleaf

 


前言

该文章是自己在整合springboot,mybatis,thymeleaf的心得


一、demo结构

二、文件内容

1.pom文件

<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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <thymeleaf-spring5.version>3.0.9.RELEASE</thymeleaf-spring5.version> <!-- <thymeleaf.version>3.0.9.RELEASE</thymeleaf.version> --> <thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.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.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--devtools热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>true</scope> </dependency> </dependencies> <build> <resource> <directory>src/main/resources</directory> </resource> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <configuration> <fork>true</fork> </configuration> </plugins> </build> </project>  

2.java代码

代码如下:

/*-------------------- 主入口 -------------------------------------*/ package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } /*------------------ Controller ---------------------------------------*/ package com.example.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import com.example.demo.config.DAO; import com.example.demo.pojo.Book; @Controller public class MyController { @Autowired DAO dao; @GetMapping("/getRes") public String getRes(Model model){ Book b = dao.selectByPrimaryKey("abc"); model.addAttribute("b", b); System.out.println(b); return "index"; } } /*------------------ Dao ---------------------------------------*/ package com.example.demo.config; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import com.example.demo.pojo.Book; @Mapper public interface DAO { Book selectByPrimaryKey(@Param("bid") String bid); } /*------------------Pojo ---------------------------------------*/ package com.example.demo.pojo; import java.io.Serializable; public class Book implements Serializable{ private static final long serialVersionUID = 1L; private String bid; public Book(){} public Book(String bid) { this.bid = bid; } public String getBid() { return bid; } public void setBid(String bid) { this.bid = bid; } public static long getSerialversionuid() { return serialVersionUID; } }  

 

3.配置文件

#################### applicatin.yml ###################################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8 username: root password: 19921201 thymeleaf: prefix: classpath:/templates/ check-template-location: true suffix: .html encoding: UTF-8 content-type: text/html mode: HTML cache: false devtools: restart: enabled: true #设置开启热部署 additional-paths: src/main/java #重启目录 mybatis: mapper-locations: classpath:mapper.xml ########################################################################## #################### logback.xml ######################################### <?xml version="1.0" encoding="UTF-8"?> <configuration debug="true"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_HOME" value="F:/workspace/eclipse/logs" /> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!--myibatis log configure--> <logger name="com.apache.ibatis" level="TRACE"/> <logger name="java.sql.Connection" level="DEBUG"/> <logger name="java.sql.Statement" level="DEBUG"/> <logger name="java.sql.PreparedStatement" level="DEBUG"/> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration> ########################################################################## #################### mapper.xml ###################################### <?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.example.demo.config.DAO"> <!-- 可根据自己的需求,是否要使用 --> <resultMap type="com.example.demo.pojo.Book" id="bookMap"> <id column="bid" property="bid" jdbcType="VARCHAR" /> </resultMap> <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="bookMap"> select * from t_book where bid = #{bid,jdbcType=VARCHAR} </select> </mapper> ##########################################################################

页面 index.html

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>springboot-thymeleaf demo</title> </head> <body> <p th:text="${b.bid}" /> </body> </html>

用到的jar

spring-boot-starter-thymeleaf-2.0.4.RELEASE.jar spring-boot-starter-2.0.4.RELEASE.jar spring-boot-starter-logging-2.0.4.RELEASE.jar logback-classic-1.2.3.jar logback-core-1.2.3.jar log4j-to-slf4j-2.10.0.jar log4j-api-2.10.0.jar jul-to-slf4j-1.7.25.jar javax.annotation-api-1.3.2.jar snakeyaml-1.19.jar thymeleaf-spring5-3.0.9.RELEASE.jar thymeleaf-3.0.9.RELEASE.jar attoparser-2.0.4.RELEASE.jar unbescape-1.1.5.RELEASE.jar slf4j-api-1.7.25.jar thymeleaf-extras-java8time-3.0.1.RELEASE.jar spring-boot-starter-web-2.0.4.RELEASE.jar spring-boot-starter-json-2.0.4.RELEASE.jar jackson-databind-2.9.6.jar jackson-annotations-2.9.0.jar jackson-core-2.9.6.jar jackson-datatype-jdk8-2.9.6.jar jackson-datatype-jsr310-2.9.6.jar jackson-module-parameter-names-2.9.6.jar spring-boot-starter-tomcat-2.0.4.RELEASE.jar tomcat-embed-core-8.5.32.jar tomcat-embed-el-8.5.32.jar tomcat-embed-websocket-8.5.32.jar hibernate-validator-6.0.11.Final.jar validation-api-2.0.1.Final.jar jboss-logging-3.3.2.Final.jar classmate-1.3.4.jar spring-web-5.0.8.RELEASE.jar spring-beans-5.0.8.RELEASE.jar spring-webmvc-5.0.8.RELEASE.jar spring-aop-5.0.8.RELEASE.jar spring-context-5.0.8.RELEASE.jar spring-expression-5.0.8.RELEASE.jar mybatis-spring-boot-starter-2.1.3.jar spring-boot-starter-jdbc-2.0.4.RELEASE.jar HikariCP-2.7.9.jar spring-jdbc-5.0.8.RELEASE.jar spring-tx-5.0.8.RELEASE.jar mybatis-spring-boot-autoconfigure-2.1.3.jar mybatis-3.5.5.jar mybatis-spring-2.0.5.jar mysql-connector-java-5.1.46.jar spring-boot-starter-test-2.0.4.RELEASE.jar spring-boot-test-2.0.4.RELEASE.jar spring-boot-test-autoconfigure-2.0.4.RELEASE.jar json-path-2.4.0.jar json-smart-2.3.jar accessors-smart-1.2.jar asm-5.0.4.jar junit-4.12.jar assertj-core-3.9.1.jar mockito-core-2.15.0.jar byte-buddy-1.7.11.jar byte-buddy-agent-1.7.11.jar objenesis-2.6.jar hamcrest-core-1.3.jar hamcrest-library-1.3.jar jsonassert-1.5.0.jar android-json-0.0.20131108.vaadin1.jar spring-core-5.0.8.RELEASE.jar spring-jcl-5.0.8.RELEASE.jar spring-test-5.0.8.RELEASE.jar xmlunit-core-2.5.1.jar spring-boot-devtools-2.0.4.RELEASE.jar spring-boot-2.0.4.RELEASE.jar spring-boot-autoconfigure-2.0.4.RELEASE.jar

效果:

 


总结

在thymeleaf整合中容易出现问题:比如在版本上,需要在properties中配置thymeleaf版本3.x,thymeleaf默认的文件夹为templates,页面return不需要有/,只返回页面的名称即可。

 

最新回复(0)