SpringBoot整合Thymeleaf

一个整合Thymeleaf与Mybatis的CRUD例子

整合Mybatis例子

一、添加maven依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

二、yml文件

spring:
  thymeleaf:
    #模板编码
    mode: LEGACYHTML5
    #是否缓存  别闹不缓存
    cache: false
    # 在构建URL时预先查看名称的前缀
    prefix: classpath:/templates/
    # 构建URL时附加查看名称的后缀.
    suffix: .html

三、sql语句

CREATE TABLE `user` (
  `id` INT(9) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(10) DEFAULT NULL,
  `age` INT(3) DEFAULT NULL,
  `birth_day` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO test.user (NAME,age,birth_day) VALUES ("xiaoming",18,NOW());
INSERT INTO test.user (NAME,age,birth_day) VALUES ("xiaohua",19,NOW());

四、静态html文件

  1、index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultrag.net.nz/thymeleaf/layout"
>
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf in action</title>
</head>
<body>
<div th:replace="~{header::header}"></div>
<h3 th:text="${userModel.title}"></h3>
<div>
    <a th:href="@{/user/form}">创建用户</a>
</div>
<table border="1">
    <thead>
    <tr>
        <td>ID</td>
        <td>age</td>
        <td>Name</td>
        <td>操作</td>
    </tr>
    </thead>
    <tbody>
    <tr th:if="${userModel.userList.size()} eq 0">
        <td colspan="3">没有用户信息!</td>
    </tr>
    <tr th:each="user:${userModel.userList}">
        <td th:text="${user.id}"></td>
        <td th:text="${user.age}"></td>
        <td >
            <a th:href="@{'/user/info/'+${user.id}}" th:text="${user.name}"></a>
        </td>
        <td >
            <a th:href="@{'/user/delete/'+${user.id}}">删除</a>
            <a th:href="@{'/user/modify/'+${user.id}}">修改</a>
        </td>
    </tr>
    </tbody>
</table>
<div th:replace="~{footer::footer}"></div>
</body>
</html>

  2、add.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultrag.net.nz/thymeleaf/layout"
>
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf in action</title>
</head>
<body>
<div th:replace="~{header::header}"></div>
<h3 th:text="${userModel.title}"></h3>
<form action="/user/save" th:action="@{/user/save}" method="POST" th:object="${userModel.user}">
    <input type="hidden" name="id" th:value="*{id}">
    名称:<br>
    <input type="text" name="name" th:value="*{name}">
    <br>
    年龄:<br>
    <select   id="age" name="age" th:value="*{age}">
        <!--<option value="99" selected="true">请选择控制时间</option>-->
        <option th:if="${'1'=='1' && '0'=='0'}" th:each="i:${#numbers.sequence(1,150)}" th:selected="${i+'' eq '18' }" th:value="${i}" th:text="${i}"  ></option>
    </select>
    生日:<br>
    <input type="text" name="birthDay" th:value="*{birthDay}">
    <input type="submit" value="提交" >
</form>
<div th:replace="~{footer::footer}"></div>

<script>

</script>
</body>
</html>

  3、info.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultrag.net.nz/thymeleaf/layout"
>
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf in action</title>
</head>
<body>
<div th:replace="~{header::header}"></div>
<h3 th:text="${userModel.title}"></h3>
<div>
    <p><strong>ID:</strong><span th:text="${userModel.user.id}"></span></p>
    <p><strong>Name:</strong><span th:text="${userModel.user.name}"></span></p>
    <p><strong>age:</strong><span th:text="${userModel.user.age}"></span></p>
    <p><strong>birthDay:</strong><span th:text="${userModel.user.birthDay}"></span></p>
</div>
<div th:replace="~{footer::footer}"></div>
</body>
</html>

  4、modify.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultrag.net.nz/thymeleaf/layout"
>
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf in action</title>
</head>
<body>
<div th:replace="~{header::header}"></div>
<h3 th:text="${userModel.title}"></h3>
<form action="/user/update" th:action="@{/user/update}" method="POST" th:object="${userModel.user}">
    <input type="hidden" name="id" th:value="*{id}">
    名称:<br>
    <input type="text" name="name" th:value="*{name}">
    <br>
    年龄:<br>
    <select   id="age" name="age" >
        <!--<option value="99" selected="true">请选择控制时间</option>-->
        <option th:if="${'1'=='1' && '0'=='0'}" th:each="i:${#numbers.sequence(1,150)}" th:selected="${i eq user.age }" th:value="${i}" th:text="${i}"  ></option>
    </select>
    生日:<br>
    <input type="text" name="birthDay" th:value="*{birthDay}">
    <input type="submit" value="提交" >
</form>
<input type="hidden" name="iasdasdd" th:value="${userModel.user.age}">
<div th:replace="~{footer::footer}"></div>
</body>
</html>

  5、footer.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultrag.net.nz/thymeleaf/layout"
>
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf in action</title>
</head>
<body>
<div th:fragment="footer">
    <a href="http://www.baidu.com">百度一下</a>
</div>
</body>
</html>

  6、header.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultrag.net.nz/thymeleaf/layout"
>
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf in action</title>
</head>
<body>
<div th:fragment="header">
    <h1>Thymeleaf in action</h1>
    <a href="/user/index" >首页</a>
</div>
</body>
</html>

五、java文件

  1、UserController

package com.ydj.yboot.web.controller;

import com.ydj.yboot.web.domain.User;
import com.ydj.yboot.web.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author yuduojia
 * @date 2019/5/24 13:17
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/index")
    public ModelAndView list(Model model) {
        model.addAttribute("userList",userService.getUserList());
        model.addAttribute("title", "用户管理");
        return new ModelAndView("user/index","userModel",model);
    }

    @GetMapping("/form")
    public ModelAndView createForm(Model model) {
        model.addAttribute("user",new User());
        model.addAttribute("title", "创建用户");
        return new ModelAndView("user/add","userModel",model);
    }

    @PostMapping("/save")
    public ModelAndView saveOrUpdateUser( User user) {
        int i = userService.saveUser(user);
        return new ModelAndView("redirect:/user/index");//重定向到list页面
    }

    @GetMapping("/delete/{id}")
    public ModelAndView deleteUser(@PathVariable("id") Long id) {
        userService.deleteUser(id);
        return new ModelAndView("redirect:/user/index");//重定向到list页面
    }


   @GetMapping("/info/{id}")
    public ModelAndView view(@PathVariable("id") Long id,Model model) {
        User user = userService.getUserById(id);
        model.addAttribute("user",user);
        model.addAttribute("title", "查看用户");
        return new ModelAndView("user/info","userModel",model);
    }


    @GetMapping("/modify/{id}")
    public ModelAndView modifyUser(@PathVariable("id") Long id, Model model) {
        model.addAttribute("user",userService.getUserById(id));
        model.addAttribute("title", "修改用户");
        return new ModelAndView("user/modify","userModel",model);
    }


    @PostMapping("/update")
    public ModelAndView updateUser(User user) {
        int l = userService.updateUser(user);
        return new ModelAndView("redirect:/user/index");//重定向到list页面
    }
}

  2、UserService

package com.ydj.yboot.web.service;

import com.ydj.yboot.web.domain.User;

import java.util.List;

/**
 * @author yuduojia
 * @date 2019/5/24 13:20
 */
public interface UserService {
    List<User> getUserList();

    int saveUser(User user);

    void deleteUser(Long id);

    User getUserById(Long id);

    int updateUser(User user);
}

  3、UserServiceImpl

package com.ydj.yboot.web.service.impl;

import com.ydj.yboot.web.dao.UserDao;
import com.ydj.yboot.web.domain.User;
import com.ydj.yboot.web.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author yuduojia
 * @date 2019/5/24 13:21
 */
@Service
public class UserServiceImpl implements UserService {

    @Resource
    private UserDao userDao;

    @Override
    public List<User> getUserList() {
        return userDao.getUserList();
    }

    @Override
    public int saveUser(User user) {
        return userDao.saveUser(user);
    }

    @Override
    public void deleteUser(Long id) {
        userDao.deleteUser(id);
    }

    @Override
    public User getUserById(Long id) {
        return userDao.getUserById(id);
    }

    @Override
    public int updateUser(User user) {
        return userDao.updateUser(user);
    }


}

  4、UserDao

package com.ydj.yboot.web.dao;

import com.ydj.yboot.web.domain.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author yuduojia
 * @date 2019/5/24 13:21
 */
@Mapper
public interface UserDao {

    List<User> getUserList();

    int saveUser(User user);

    void deleteUser(Long id);

    User getUserById(Long id);

    int updateUser(User user);
}

  5、user

package com.ydj.yboot.web.domain;

import java.io.Serializable;
import java.util.Date;

/**
 * @author yuduojia
 * @date 2019/5/24 13:14
 */
public class User implements Serializable {

    private int id;
    private String name;
    private int age;
    private String birthDay;
//    private Dept dept;
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getBirthDay() {
        return birthDay;
    }

    public void setBirthDay(String birthDay) {
        this.birthDay = birthDay;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", birthDay=" + birthDay +
                '}';
    }
}

六、静态mapper.xml文件  UserMapper.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.ydj.yboot.web.dao.UserDao">

    <select id="getUserList" resultMap="getUserListResultMap">
        select * from user
        <where>
            <if test="id != null and id != ''"> and id = #{id} </if>
            <if test="name != null and name != ''"> and name = #{name} </if>
            <if test="age != null and age != ''"> and age = #{age} </if>
            <if test="birthDay != null and birthDay != ''"> and birth_day = #{birthDay} </if>
        </where>
    </select>

    <resultMap id="getUserListResultMap" type="com.ydj.yboot.web.domain.User">
        <id column="id" property="id" jdbcType="INTEGER"></id>
        <result column="name" property="name" jdbcType="VARCHAR"></result>
        <result column="age" property="age" jdbcType="INTEGER"></result>
        <result column="birthDay" property="birth_day" jdbcType="TIMESTAMP"></result>
        <!--<association property="Dept" javaType="com.ydj.yboot.web.domain.Dept">
            <result column="dept_name" property="deptName"></result>
        </association>-->
    </resultMap>

    <insert id="saveUser" parameterType="com.ydj.yboot.web.domain.User"
            useGeneratedKeys="true" keyProperty="id">
        insert into user
        (
        `name`,
        `age`,
        `birth_day`
        )
        values
        (
        #{name},
        #{age},
        #{birthDay}
        )
    </insert>

    <delete id="deleteUser" parameterType="long" >
        delete from user where id = #{value}
    </delete>

    <select id="getUserById" resultType="com.ydj.yboot.web.domain.User">
        select * from user where id = #{value}
    </select>

    <update id="updateUser" parameterType="com.ydj.yboot.web.domain.User">
        update user
        <set>
            <if test="name != null">`name` = #{name}, </if>
            <if test="age != null">`age` = #{age}, </if>
            <if test="birthDay != null">`birth_day` = #{birthDay} </if>
        </set>
        where id = #{id}
    </update>


</mapper>

 

posted @ 2019-05-27 16:08  TimeSay  阅读(888)  评论(0编辑  收藏  举报