Thymeleaf实现简单的用户管理
GitHub源码地址:https://github.com/SilentSpeaker/thymeleaf-application
文件目录树
thymeleaf-application 文件夹目录树
+- gradle
+- wrapper
+- gradle-wrapper.jar
+- gradle-wrapper.properties
+- src
+- main
+- java
+- com
+- example
+- demo
+- domain
+- User.java
+- repository
+- UserRepository.java
+- UserRepositoryImpl.java
+- controller
+- UserController.java
+- DemoApplication.java
+- resources
+- static
+- favicon.ico
+- templates
+- fragments
+- footer.html
+- headter.html
+- users
+- form.html
+- list.html
+- view.html
+- application.properties
+- test
+- java
+- com
+- example
+- demo
+- DemoApplicationTests.java
+- .gitignore
+- build.gradle
+- gradlew
+- gradlew.bat
项目构建
实体类设计
实体类
设计的User
实体类需具有如下属性:
- 唯一的标识和其他属性;
- 具有修改和获取属性的方法。
则User.java
代码为:
package com.example.demo.domain;
public class User {
private Long id;// 唯一标识
private String name;
private String email;
public User() {
}
public User(Long id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
实体类的增删查改
还需要设计对User
类进行增删查改的类。
先设计UserRepository.java
接口。
package com.example.demo.repository;
import java.util.List;
import com.example.demo.domain.User;
/*
* User Repository 接口
*
* */
public interface UserRepository {
/*
* 创建或修改
* */
User saveOrUpdataUser(User user);
/*
* 删除
* */
void deleteUser(Long id);
/*
* 查询单个
* */
User getUserById(Long id);
/*
* 获取用户列表
* */
List<User> listUser();
}
再设计实现UserRepository
接口的实现类UserRepositoryImpl.java
:
package com.example.demo.repository;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.stereotype.Repository;
import com.example.demo.domain.User;
/*
* User Repository 接口的实现
*
* */
@Repository
public class UserRepositoryImpl implements UserRepository {
// 计数,自增
private static AtomicLong counter = new AtomicLong();
private final ConcurrentMap<Long, User> userMap = new ConcurrentHashMap<>();
@Override
public User saveOrUpdataUser(User user) {
Long id = user.getId();
if (id