Spring boot(三)整合mybaties+thymeleaf实现基础crud

工程结构:

  Spring boot(三)整合mybaties+thymeleaf实现基础crud

  首先在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>com.liu</groupId>
<artifactId>spring-boot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>spring-boot-mybatis</name>
<url>http://maven.apache.org</url> <!-- spring boot parent节点,引入这个之后,在下面和spring boot相关的就不需要引入版本了; -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 指定一下jdk的版本 ,这里我们使用jdk 1.8 ,默认是1.6 -->
<java.version>1.8</java.version>
</properties> <dependencies> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>1.3.0.RELEASE</version>
<optional>true</optional>
</dependency> <!-- web支持: 1、web mvc; 2、restful; 3、jackjson支持; 4、aop ........ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <!-- mysql 数据库驱动. -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency> <!-- spring-boot mybatis依赖: 请不要使用1.0.0版本,因为还不支持拦截器插件, 1.1.1 是博主写帖子时候的版本,大家使用最新版本即可 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency> <!-- 添加thymeleaf模板引擎 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
</dependencies>
</project>

  在启动类中开启自动扫包

 package com.liu.spring_boot_mybatis;

 import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
@MapperScan("com.liu.*")//扫描:该包下相应的class,主要是MyBatis的持久化类.
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}

  在application.properties中配置mysql和thymeleaf

########################################################
###datasource
########################################################
spring.datasource.url = jdbc:mysql://localhost:/blog?useUnicode=true&characterEncoding=utf-
spring.datasource.username = root
spring.datasource.password =
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=
spring.datasource.max-idle=
spring.datasource.min-idle=
spring.datasource.initial-size=
########################################################
###thymeleaf
########################################################
spring.thymeleaf.cache=false
spring.thymeleaf.check-template-location=true
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-
spring.thymeleaf.content-type=text/html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.prefix=classpath:/templates/

  根据数据库中表类型创建实体类

 package com.liu.spring_boot_mybatis.bean;

 public class Userinfo {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} }

  根据业务创建mapper文件,本次整合只整合了crud的基础操作示例

 package com.liu.spring_boot_mybatis.mapper;

 import org.apache.ibatis.annotations.*;

 import com.liu.spring_boot_mybatis.bean.Userinfo;

 import java.util.List;

 @Mapper
public interface UserinfoMapper { @Select("select * from userinfo")
public List<Userinfo> Finduser(Userinfo userinfo); // #{id} 参数占位符
@Select("select * from userinfo where id=#{id}")
public Userinfo getid(int id); @Insert("insert into userinfo(id,username,password) values(#{id},#{username},#{password})")
public int insert(Userinfo userinfo); @Update("update userinfo set username=#{username},password=#{password} where id=#{id} ")
public int update(Userinfo userinfo); @Delete("delete from userinfo where id=#{id}")
public int delete(int id); }

  service

 package com.liu.spring_boot_mybatis.service;

 import java.util.List;

 import org.apache.ibatis.annotations.Select;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.liu.spring_boot_mybatis.bean.Userinfo;
import com.liu.spring_boot_mybatis.mapper.UserinfoMapper; @Service
public class UserinfoService {
@Autowired
private UserinfoMapper userinfoMapper; public List<Userinfo> Finduser(Userinfo userinfo){return userinfoMapper.Finduser(userinfo);}
public Userinfo getid(int id ) {
return userinfoMapper.getid(id);
}
public int insert(Userinfo userinfo) {
return userinfoMapper.insert(userinfo);
}
public int update(Userinfo userinfo){return userinfoMapper.update(userinfo);}
public int delete(int id){return userinfoMapper.delete(id);}
}

  Controller

 package com.liu.spring_boot_mybatis.controller;

 import java.util.ArrayList;
import java.util.List; import javax.servlet.http.HttpServletRequest; 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 org.springframework.web.bind.annotation.RestController; import com.liu.spring_boot_mybatis.bean.Userinfo;
import com.liu.spring_boot_mybatis.service.UserinfoService; @Controller
public class UserinfoController { @Autowired
private UserinfoService usService; //查询全部
@RequestMapping(value="/Finduser")
public String Finduser(Model model, Userinfo userinfo) {
List<Userinfo> list = new ArrayList<>();
list = usService.Finduser(userinfo);
model.addAttribute("list", list);
model.addAttribute("contens",usService.Finduser(userinfo));
return "list"; } @RequestMapping(value="getid")
public String getid(Model model, int id) {
Userinfo Userinfo = usService.getid(id);
model.addAttribute("user",Userinfo);
return "userEdit";
} @RequestMapping(value="edit")
public String update(Userinfo user){
this.usService.update(user);
return "redirect:/Finduser";
} @RequestMapping(value="delete")
public String delete(int id){
this.usService.delete(id);
return "redirect:/Finduser";
} //增加跳转
@RequestMapping(value="toAdd")
public String add()
{
return "userAdd";
} @RequestMapping(value="/insert")
public String insert(Model model,Userinfo userinfo) {
this.usService.insert(userinfo);
return "redirect:/Finduser";
}
}

   编写html 注意static,默认放的是静态文件例如css,js,在templates中放的是html模板,html引入静态资源的时候默认路径是/根目录下的

  list.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>userList</title>
<link rel="stylesheet" th:href="@{/bootstrap.css}"></link>
</head>
<body class="container">
<br/>
<h1>用户列表</h1>
<br/><br/>
<div class="with:80%">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>User Name</th>
<th>Password</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
<tr th:each="list : ${list}">
<th scope="row" th:text="${list.id}">1</th>
<td th:text="${list.username}">neo</td>
<td th:text="${list.password}">Otto</td>
<td><a th:href="@{/getid(id=${list.id})}">edit</a></td>
<td><a th:href="@{/delete(id=${list.id})}">delete</a></td>
</tr>
</tbody>
</table>
</div>
<div class="form-group">
<div class="col-sm-2 control-label">
<a href="/toAdd" th:href="@{/toAdd}" class="btn btn-info">add</a>
</div>
</div> </body>
</html>

  edit.html

 <!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>user</title>
<link rel="stylesheet" th:href="@{/bootstrap.css}"></link>
</head>
<body class="container">
<br/>
<h1>修改用户</h1>
<br/><br/>
<div class="with:80%">
<form class="form-horizontal" th:action="@{/edit}" th:object="${user}" method="post">
<input type="hidden" name="id" th:value="*{id}" />
<div class="form-group">
<label for="username" class="col-sm-2 control-label">userName</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="username" id="username" th:value="*{username}" placeholder="userName"/>
</div>
</div>
<div class="form-group">
<label for="password" class="col-sm-2 control-label" >Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="password" id="password" th:value="*{password}" placeholder="Password"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" value="Submit" class="btn btn-info" />
&nbsp; &nbsp; &nbsp;
<a href="/Finduser" th:href="@{/Finduser}" class="btn btn-info">Back</a>
</div> </div>
</form>
</div>
</body>
</html>

  add.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>user</title>
<link rel="stylesheet" th:href="@{/bootstrap.css}"></link>
</head>
<body class="container">
<br/>
<h1>添加用户</h1>
<br/><br/>
<div class="with:80%">
<form class="form-horizontal" th:action="@{/insert}" method="post">
<div class="form-group">
<label for="username" class="col-sm-2 control-label">username</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="username" id="username" placeholder="username"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-10">
<label for="password" class="col-sm-2 control-label" >Password</label>
<input type="password" class="form-control" name="password" id="password" placeholder="Password"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" value="Submit" class="btn btn-info" />
&nbsp; &nbsp; &nbsp;
<input type="reset" value="Reset" class="btn btn-info" />
</div> </div>
</form>
</div>
</body>
</html>

  css太多不贴了

  直接测试

  Spring boot(三)整合mybaties+thymeleaf实现基础crud

  大功告成~

 源码地址:https://github.com/liu119631/spring-boot

 

上一篇:仿Redis用来作前端浏览器的数据存储结构


下一篇:spring 缓存(spring自带Cache)(入门)源码解读