• 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>

      在启动类中开启自动扫包

     1 package com.liu.spring_boot_mybatis;
     2 
     3 import org.mybatis.spring.annotation.MapperScan;
     4 import org.springframework.boot.SpringApplication;
     5 import org.springframework.boot.autoconfigure.SpringBootApplication;
     6 
     7 @SpringBootApplication
     8 @MapperScan("com.liu.*")//扫描:该包下相应的class,主要是MyBatis的持久化类.
     9 public class App {
    10     public static void main(String[] args) {
    11         SpringApplication.run(App.class, args);
    12     }
    13 }

      在application.properties中配置mysql和thymeleaf

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

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

     1 package com.liu.spring_boot_mybatis.bean;
     2 
     3 
     4 public class Userinfo {
     5     private int id;
     6     private String username;
     7     private String password;
     8     public int getId() {
     9         return id;
    10     }
    11     public void setId(int id) {
    12         this.id = id;
    13     }
    14     public String getUsername() {
    15         return username;
    16     }
    17     public void setUsername(String username) {
    18         this.username = username;
    19     }
    20     public String getPassword() {
    21         return password;
    22     }
    23     public void setPassword(String password) {
    24         this.password = password;
    25     }
    26     
    27 }

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

     1 package com.liu.spring_boot_mybatis.mapper;
     2 
     3 import org.apache.ibatis.annotations.*;
     4 
     5 import com.liu.spring_boot_mybatis.bean.Userinfo;
     6 
     7 import java.util.List;
     8 
     9 @Mapper
    10 public interface UserinfoMapper {
    11 
    12     @Select("select * from userinfo")
    13     public List<Userinfo> Finduser(Userinfo userinfo);
    14 
    15     // #{id} 参数占位符
    16     @Select("select * from userinfo where id=#{id}")
    17     public Userinfo getid(int id);
    18 
    19     @Insert("insert into userinfo(id,username,password) values(#{id},#{username},#{password})")
    20     public int insert(Userinfo userinfo);
    21 
    22     @Update("update userinfo set username=#{username},password=#{password} where id=#{id} ")
    23     public int update(Userinfo userinfo);
    24 
    25     @Delete("delete from userinfo where id=#{id}")
    26     public  int delete(int id);
    27 
    28 }

      service

     1 package com.liu.spring_boot_mybatis.service;
     2 
     3 import java.util.List;
     4 
     5 import org.apache.ibatis.annotations.Select;
     6 import org.springframework.beans.factory.annotation.Autowired;
     7 import org.springframework.stereotype.Service;
     8 
     9 import com.liu.spring_boot_mybatis.bean.Userinfo;
    10 import com.liu.spring_boot_mybatis.mapper.UserinfoMapper;
    11 
    12 @Service
    13 public class UserinfoService {
    14     @Autowired
    15     private UserinfoMapper userinfoMapper;
    16 
    17     public List<Userinfo>  Finduser(Userinfo userinfo){return userinfoMapper.Finduser(userinfo);}
    18     public Userinfo getid(int id ) {
    19         return userinfoMapper.getid(id);
    20     }
    21     public  int insert(Userinfo userinfo) {
    22         return userinfoMapper.insert(userinfo);
    23     }
    24     public  int update(Userinfo userinfo){return  userinfoMapper.update(userinfo);}
    25     public  int delete(int id){return  userinfoMapper.delete(id);}
    26 }

      Controller

     1 package com.liu.spring_boot_mybatis.controller;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 import javax.servlet.http.HttpServletRequest;
     7 
     8 import org.springframework.beans.factory.annotation.Autowired;
     9 import org.springframework.stereotype.Controller;
    10 import org.springframework.ui.Model;
    11 import org.springframework.web.bind.annotation.RequestMapping;
    12 import org.springframework.web.bind.annotation.RestController;
    13 
    14 import com.liu.spring_boot_mybatis.bean.Userinfo;
    15 import com.liu.spring_boot_mybatis.service.UserinfoService;
    16 
    17 @Controller
    18 public class UserinfoController {
    19 
    20     @Autowired
    21     private UserinfoService usService;
    22 
    23     //查询全部
    24     @RequestMapping(value="/Finduser")
    25     public String Finduser(Model model, Userinfo userinfo) {
    26         List<Userinfo> list = new ArrayList<>();
    27         list = usService.Finduser(userinfo);
    28         model.addAttribute("list", list);
    29         model.addAttribute("contens",usService.Finduser(userinfo));
    30         return "list";
    31 
    32     }
    33 
    34 
    35     @RequestMapping(value="getid")
    36     public String getid(Model model, int id) {
    37         Userinfo Userinfo = usService.getid(id);
    38         model.addAttribute("user",Userinfo);
    39         return "userEdit";
    40     }
    41 
    42     @RequestMapping(value="edit")
    43     public  String update(Userinfo user){
    44         this.usService.update(user);
    45         return "redirect:/Finduser";
    46     }
    47 
    48     @RequestMapping(value="delete")
    49     public  String delete(int id){
    50         this.usService.delete(id);
    51         return "redirect:/Finduser";
    52     }
    53 
    54     //增加跳转
    55     @RequestMapping(value="toAdd")
    56     public String  add()
    57     {
    58         return  "userAdd";
    59     }
    60 
    61     @RequestMapping(value="/insert")
    62     public String insert(Model model,Userinfo userinfo) {
    63         this.usService.insert(userinfo);
    64         return "redirect:/Finduser";
    65     }
    66 }

       编写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

     1 <!DOCTYPE html>
     2 <html lang="en" xmlns:th="http://www.thymeleaf.org">
     3 <head>
     4     <meta charset="UTF-8"/>
     5     <title>user</title>
     6     <link rel="stylesheet" th:href="@{/bootstrap.css}"></link>
     7 </head>
     8 <body class="container">
     9 <br/>
    10 <h1>修改用户</h1>
    11 <br/><br/>
    12 <div class="with:80%">
    13     <form class="form-horizontal"   th:action="@{/edit}" th:object="${user}"  method="post">
    14         <input type="hidden" name="id" th:value="*{id}" />
    15         <div class="form-group">
    16             <label for="username" class="col-sm-2 control-label">userName</label>
    17             <div class="col-sm-10">
    18                 <input type="text" class="form-control" name="username"  id="username" th:value="*{username}" placeholder="userName"/>
    19             </div>
    20         </div>
    21         <div class="form-group">
    22             <label for="password" class="col-sm-2 control-label" >Password</label>
    23             <div class="col-sm-10">
    24                 <input type="password" class="form-control" name="password" id="password"  th:value="*{password}" placeholder="Password"/>
    25             </div>
    26         </div>
    27         <div class="form-group">
    28             <div class="col-sm-offset-2 col-sm-10">
    29                 <input type="submit" value="Submit" class="btn btn-info" />
    30                 &nbsp; &nbsp; &nbsp;
    31                 <a href="/Finduser" th:href="@{/Finduser}" class="btn btn-info">Back</a>
    32             </div>
    33 
    34         </div>
    35     </form>
    36 </div>
    37 </body>
    38 </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太多不贴了

      直接测试

      

      大功告成~

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

     

  • 相关阅读:
    XOR加密作业
    2019-2020-1 20191312《信息安全专业导论》第六周学习总结
    欧几里得算法及其伪代码
    2019-2020-1 20191312《信息安全专业导论》第五周学习总结
    2019-2020-1 20191312《信息安全专业导论》第四周学习总结
    寻找你的黑客偶像作业
    2019-2020-1 20191312 《信息安全专业导论》第三周学习总结
    罗马数字转化为阿拉伯数字
    IEEE754 浮点数
    2019-2020-2 网络对抗技术 20175211 Exp6 MFS基础应用
  • 原文地址:https://www.cnblogs.com/mmmmyblog/p/8301891.html
Copyright © 2020-2023  润新知