目录
一、数据库表准备
创建一个"shiro_demo"数据库,并在其中创建一张user表。我们接下来将整合项目并取出数据库user表中所有数据。
DROP TABLE IF EXISTS `user_tb`;
CREATE TABLE `user_tb` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`department` varchar(255) DEFAULT NULL,
`classroom` int(11) DEFAULT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `user_tb` VALUES ('1', '周杰伦', '音乐系', '5');
INSERT INTO `user_tb` VALUES ('2', '张无忌', '武当派', '1');
INSERT INTO `user_tb` VALUES ('3', '赵敏', '蒙古族', '3');
二、创建项目
1、创建项目 | |
2、最终项目结构 | |
三、添加pom.xml
里面引入了本次整合所需要的所有依赖包,包括Mybatis、thymeleaf、lombok。
<?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.example</groupId>
<artifactId>ShiroDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</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>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
</dependencies>
</project>
四、配置application.yml
也就是application.properties,只是格式不同而已,个人觉得yml格式更直观清晰。
spring:
# mysql 数据源
datasource:
url: jdbc:mysql://localhost/shiro_demo?useUnicode=true&characterEncoding=UTF-8
username: root
password: root
driverClassName: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.zyy.model
五、编写代码
user.java
因为使用了@Data注解,所以可以省略get、set、toString···
package com.zyy.model;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @ClassName User
* @Author DoNg
* @Date 2020/8/12 0012 10:58
* @Description User
*/
@Data
public class User{
private Integer userid;
private String username;
private String department;
private Integer classroom;
}
UserMapper.xml (在resourses目录下新建mapper文件夹,用于存放xxxMapper.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.zyy.mapper.UserMapper">
<select id="selectAllUser" resultType="com.zyy.model.User">
select * from user_tb
</select>
</mapper>
UserMapper.java
package com.zyy.mapper;
import com.zyy.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @ClassName UserMapper
* @Author DoNg
* @Date 2020/8/12 0012 11:19
* @Description UserMapper
*/
@Mapper
@Repository
public interface UserMapper {
List<User> selectAllUser();
}
UserService.java
package com.zyy.service;
import com.zyy.model.User;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @ClassName UserService
* @Author DoNg
* @Date 2020/8/12 0012 11:51
* @Description UserService
*/
public interface UserService {
List<User> getAllUser();
}
UserServiceImpl.java
package com.zyy.service.impl;
import com.zyy.mapper.UserMapper;
import com.zyy.model.User;
import com.zyy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @ClassName UserServiceImpl
* @Author DoNg
* @Date 2020/8/12 0012 11:52
* @Description UserServiceImpl
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> getAllUser(){
return this.userMapper.selectAllUser();
}
}
UserController.java
package com.zyy.controller;
import com.zyy.model.User;
import com.zyy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/**
* @ClassName UserController
* @Author DoNg
* @Date 2020/8/12 0012 11:33
* @Description UserController
*/
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/all")
public String all(ModelMap model) {
// 查询用户
List<User> users = this.userService.getAllUser();
for (User user : users) {
System.out.println(user.toString());
}
// 放入模型
model.addAttribute("users", users);
// 返回模板名称(就是classpath:/templates/目录下的html文件名)
return "users";
}
}
UserApplication.java(启动类)
package com.zyy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @ClassName UserApplication
* @Author DoNg
* @Date 2020/8/12 0012 14:25
* @Description UserApplication
*/
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class);
}
}
在resourses目录下新建templates文件夹,用于存放html页面。
新建users.html,注意引入<html xmlns:th="http://www.thymeleaf.org">
users.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>首页</title>
<style type="text/css">
table {border-collapse: collapse; font-size: 14px; width: 80%; margin: auto}
table, th, td {border: 1px solid darkslategray;padding: 10px}
</style>
</head>
<body>
<div style="text-align: center">
<span style="color: darkslategray; font-size: 30px">用户列表!</span>
<hr/>
<table class="list">
<tr>
<th>id</th>
<th>姓名</th>
<th>部门</th>
<th>班级</th>
</tr>
<tr th:each="user : ${users}">
<td th:text="${user.userid}"></td>
<td th:text="${user.username}"></td>
<td th:text="${user.department}"></td>
<td th:text="${user.classroom}"></td>
</tr>
</table>
</div>
</body>
</html>
六、启动测试
运行启动类,浏览器中输入http://localhost:8080/user/all,得到如图结果,至此整合完毕!