实现使用mybatis逆向工程自动生成mapper、dao、bean(详见ssm+mybatis自动生成器)之后,完善整个项目,添加页面取出数据。
掉坑记录:
1.application.properties配置文件注意修改mapper文件夹位置(此位置为自动生成工具生成,和自己之前习惯创建的文件夹位置不一样,忘记修改了。)
mybatis.mapper-locations=classpath:com/example/demo/mapper/UserMapper.xml
2.springboot没有WEB-INF文件夹,只有resource,粗略了解到static为静态文件夹,templates为动态页面文件夹。
学习参考:Springboot的static和templates, 如何在HTML页面,访问request对象里边传递的参数
故将index.html页面放入templates文件夹下
注意要修改pom.xml配置
<!-- 加载resources/templates下的动态页面 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
application.properties配置
spring.mvc.view.suffix=.html
html页面获取对象数据方式
[[${user.id}]]
controller中跳转动态页面没有后缀,跳转静态页面需要加后缀 return “index.html”
@RequestMapping("/hi")
public String findById(HttpServletRequest request) {
User user = userService.findById(1);
System.out.println(user.toString());
request.setAttribute("user", user);
return "index";
}
项目结构:
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 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.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>generator_ssm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>generator_ssm</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-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</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-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<!-- https://github.com/mybatis/generator/releases -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
</dependency>
<!-- springboot 内置热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional> <!-- 这个需要为 true热部署才有效 -->
</dependency>
<!-- 加载resources/templates下的动态页面 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
# 指定跳转的前缀
# spring.mvc.view.prefix=/WEB-INF/jsp/
# 指定跳转页面的后缀
# spring.mvc.view.suffix=.jsp
spring.mvc.view.suffix=.html
# 静态文件路径
# spring.resources.static-locations=classpath:/static/
#这表示只有静态资源的访问路径为/resources/**时,才会处理请求
# spring.mvc.static-path-pattern=/static/**
# 访问的项目名
server.servlet.context-path=/ssm
# 数据库的配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/generator_ssmdb
spring.datasource.username=root
spring.datasource.password=root
# mybatis配置文件
mybatis.type-aliases-package=com.example.demo.bean
mybatis.mapper-locations=classpath:com/example/demo/mapper/UserMapper.xml
UserController.java
package com.example.demo.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.example.demo.bean.User;
import com.example.demo.service.impl.UserServiceImpl;
@Controller
@ComponentScan({"com.example.demo.service"})
@MapperScan({"com.example.demo.dao"})
public class UserController {
@Resource
private UserServiceImpl userService;
@RequestMapping("/hi")
public String findById(HttpServletRequest request) {
User user = userService.findById(1);
System.out.println(user.toString());
request.setAttribute("user", user);
return "index";
}
}
index.html
<!DOCTYPE html>
<html>
<body>
<h2>Hello World!</h2>
<!-- https://blog.csdn.net/wuainifu/article/details/78789011 -->
<!-- html5 获取数据 后台:request.setAttribute("user", user); -->
<h4>[[${user}]]</h4>
<h4>[[${user.id}]]</h4>
<h4>[[${user.username}]]</h4>
<h4>[[${user.password}]]</h4>
<h4>[[${user.email}]]</h4>
</body>
</html>