Spring boot学习(二)页面模板与MySQL交互

来源:互联网 发布:问卷录入软件 编辑:程序博客网 时间:2024/06/15 19:09

Spring Boot支持的模板类型有:
velocity、freemarker、Thymeleaf等
在本博客当中主要介绍的是使用thymeleaf模板构建页面view

Thymeleaf
Thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。

Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP,或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。

在使用thymeleaf模板之前,我们需要在pom.xml文档当中引入jar:

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

在application.properties文件当中增加相关的配置:

#thymeleaf startspring.thymeleaf.mode=LEGACYHTML5#spring.thymeleaf.encoding=UTF-8#spring.thymeleaf.content-type=text/html#开发的时候,不启用缓存spring.thymeleaf.cache=false#thymeleaf end

创建用户实体:

import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;@Entity@Table(name="t_s_base_user")public class User {    @Id    @GeneratedValue(generator = "paymentableGenerator")    @GenericGenerator(name = "paymentableGenerator", strategy = "uuid")    @Column(name ="ID",nullable=false,length=32)    private String id;    @Column(name = "activitisync")    private Short activitiSync;    @Column(name = "browser", length = 20)    private String browser;    @Column(name = "password", length = 100)    private String password;    @Column(name = "realname", length = 50)    private String realname;    @Column(name = "status")    private Short status;    @Column(name = "username", nullable = false, length = 10)    private String username;    @Column(name="delete_flag")    private Integer deleteFlag;//getter和setter}

创建对应的UserServiceI.java:

@Transactionalpublic interface UserServiceI {    List<User> findAll();}
@Service("userService")@Transactionalpublic class UserServiceImpl implements UserServiceI {    @Resource    private UserDao userDao;    @Override    public List<User> findAll() {        return userDao.findAll();    }}

与数据库之间交互对应的DAO文件:

import org.springframework.data.jpa.repository.JpaRepository;import com.novel.base.entity.User;public interface UserDao extends JpaRepository<User, String>{}

这边的DAO直接继承自JpaRespository,在JpaRespository当中实现了JavaBean实体基本的增加(save)、更新(save)、删除(delete)、查找(findAll、findOne)等基本的操作。JpaRespository能够根据我们定义的方法完成相关的复杂查询或者操作。

在实际情况当中,我们可能需要根据JavaBean的一个字段获取对应的列表数据信息,那么此时的方法名称定义如下:

//根据用户名查询对应的用户List<User> findByUsername(String username);

当然我们也可能会需要使用多个字段进行联合查询数据信息:

//使用用户的用户名和密码查询用户User findByUsernameAndPassword(String username,String password);

如果我们需要使用更加复杂的查询,我们可以使用原生的SQL语句

//使用原生的SQL进行查询@Query(value="select count(1) from t_s_base_user",nativeQuery=true)List<User> findUserCount();

对应的Controller:

@Controller@RequestMapping("/user")public class UserController {    @Resource    private UserServiceI userService;    @RequestMapping("/list")    public String list(HttpServletRequest request){        List<User> userList = userService.findAll();        request.setAttribute("userList", userList);        return "/userlist";    }}

此时返回的是”/userlist”,那么此时对应的模板库会去src/main/resources/templates/当中查询userlist.html模板。

<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"><title>用户列表</title></head><body><table>    <thead>        <tr>            <th>序号</th>            <th>用户名</th>            <th>真实姓名</th>        </tr>    </thead>    <tbody th:each="user,index : ${userList}">        <tr>            <td th:text="${index.count}">1</td>            <td th:text="${user.username}">admin</td>            <td th:text="${user.realname}">admin</td>        </tr>    </tbody></table></body></html>
0 0