注释 ytt #4

Merged
p4vb9jpo3 merged 7 commits from branch/ytt into develop 3 months ago

@ -27,142 +27,233 @@ import com.utils.R;
/**
*
* 退
* 使 @RequestMapping("users") "/users"使 @RestController RESTful JSON
*/
@RequestMapping("users")
@RestController
public class UsersController {
// 自动注入用户服务层接口,通过该接口可以调用与用户相关的业务方法,比如查询用户、插入用户等数据库操作相关的方法,具体实现由对应的服务层类来完成。
@Autowired
private UsersService usersService;
// 自动注入Token服务层接口用于处理与用户Token相关的业务逻辑例如生成用户登录后的Token等操作具体功能在TokenService类中实现。
@Autowired
private TokenService tokenService;
/**
*
* Token
* 使 @IgnoreAuth 访使 @PostMapping POST "/login" "/users/login"
* @param username
* @param password
* @param captcha
* @param request HttpServletRequest使
* @return RTokenID
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
// 通过用户服务层的selectOne方法结合EntityWrapper构建的查询条件根据传入的用户名从数据库中查询对应的用户实体信息。
// 这里的查询条件是查找用户名与传入的username相等的用户记录返回符合条件的UsersEntity对象若存在若不存在则返回null。
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
// 如果查询到的用户为null即用户名不存在或者密码不匹配通过调用user对象的getPassword方法获取存储的密码并与传入的password比对则返回账号或密码不正确的错误信息给前端。
if (user == null ||!user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
// 如果用户信息验证通过调用Token服务层的generateToken方法根据用户的ID、用户名、用户类型这里固定为"users"以及用户的角色信息生成一个用于标识用户登录状态的Token字符串。
String token = tokenService.generateToken(user.getId(), username, "users", user.getRole());
R r = R.ok();
// 将生成的Token放入返回结果对象R中以便前端接收并后续用于验证用户登录状态等操作。
r.put("token", token);
r.put("role",user.getRole());
r.put("userId",user.getId());
// 将用户的角色信息放入返回结果对象R中方便前端知晓当前登录用户的角色权限等情况。
r.put("role", user.getRole());
// 将用户的ID信息放入返回结果对象R中前端可能会根据此ID进行一些与用户相关的后续操作。
r.put("userId", user.getId());
return r;
}
/**
*
* UsersEntity使使
* 使 @IgnoreAuth 访使 @PostMapping POST "/register" "/users/register"
* @param user UsersEntity
* @return R
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
usersService.insert(user);
return R.ok();
}
public R register(@RequestBody UsersEntity user) {
// 以下这行代码被注释掉了,可能原本是用于对传入的用户实体进行数据合法性验证的逻辑,比如验证用户名、密码是否符合格式要求等,目前未生效。
// ValidatorUtils.validateEntity(user);
// 通过用户服务层的selectOne方法结合EntityWrapper构建的查询条件根据传入的用户实体中的用户名去数据库中查询是否已存在相同用户名的用户记录若存在则返回对应的UsersEntity对象若不存在则返回null。
if (usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()))!= null) {
return R.error("用户已存在");
}
// 如果用户名未被使用调用用户服务层的insert方法将包含新用户信息的user对象插入到数据库中完成用户注册操作。
usersService.insert(user);
return R.ok();
}
/**
* 退
* 退使Session退
* 使 @GetMapping GET "/logout" "/users/logout"
* @param request HttpServletRequest
* @return R"退出成功"退
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
// 调用HttpServletRequest对象的invalidate方法使当前会话失效即清除会话中存储的用户登录凭证、用户相关属性等信息达到退出登录的效果。
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
*
*/
@IgnoreAuth
}
/**
*
* 123456
* 使 @IgnoreAuth 访 @RequestMapping "/resetPass" "/users/resetPass"@RequestMapping("users")
* @param username 便
* @param request HttpServletRequest使
* @return R
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
usersService.update(user,null);
return R.ok("密码已重置为123456");
}
/**
*
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
PageUtils page = usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
public R resetPass(String username, HttpServletRequest request) {
// 通过用户服务层的selectOne方法结合EntityWrapper构建的查询条件查找用户名与传入的username相等的用户记录从数据库中查询对应的用户实体信息。
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
// 如果查询到的用户为null即用户名对应的用户不存在返回账号不存在的错误信息给前端。
if (user == null) {
return R.error("账号不存在");
}
// 如果用户存在将用户的密码设置为固定值“123456”实际应用中这样直接设置密码不太安全可后续优化为更安全合理的密码重置逻辑比如通过发送验证码验证等方式。
user.setPassword("123456");
// 调用用户服务层的update方法传入更新后的user对象以及null可能表示不需要其他额外的更新条件具体取决于update方法的参数定义将用户的密码更新到数据库中。
usersService.update(user, null);
// 返回操作成功的结果信息并附带密码已重置为“123456”的提示内容告知前端密码重置操作已完成。
return R.ok("密码已重置为123456");
}
/**
*
*/
@RequestMapping("/list")
public R list( UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", usersService.selectListView(ew));
}
/**
*
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
* session
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
*
*/
@PostMapping("/save")
public R save(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
user.setPassword("123456");
usersService.insert(user);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
public R update(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
usersService.updateById(user);//全部更新
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
usersService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
*
*
* @RequestMapping "/page" "/users/page"
* @param params Map
* @param user UsersEntityMPUtil使
* @return RPageUtils
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, UsersEntity user) {
// 创建一个EntityWrapper对象用于构建数据库查询条件它可以方便地拼接各种查询条件语句例如等于、大于、小于等条件初始时为空后续会根据业务逻辑添加相应条件。
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
// 调用用户服务层的queryPage方法进行分页查询传入params参数用于分页相关设置以及通过MPUtil相关工具方法构建的查询条件。
// MPUtil.sort方法可能用于对查询结果进行排序设置MPUtil.between方法可能用于构建范围查询条件MPUtil.allLike方法可能用于构建模糊查询条件等具体功能取决于MPUtil工具类的实现。
PageUtils page = usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
*
*
* @RequestMapping "/list" "/users/list"
* @param user UsersEntityMPUtilallEq便
* @return RusersService.selectListView
*/
@RequestMapping("/list")
public R list(UsersEntity user) {
// 创建一个EntityWrapper对象用于构建数据库查询条件方便后续添加具体的查询条件语句。
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
// 使用MPUtil工具类的allEq方法将用户对象中的属性按照指定前缀这里是"user"转换为相等查询条件添加到EntityWrapper对象中用于构建查询符合该用户对象属性值的所有用户记录的条件语句。
ew.allEq(MPUtil.allEQMapPre(user, "user"));
return R.ok().put("data", usersService.selectListView(ew));
}
/**
*
* IDR
* @RequestMapping "/info/{id}" "/users/info/{id}"{id}ID
* @param id ID
* @return RUsersEntity
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id) {
// 通过用户服务层的selectById方法根据传入的用户ID从数据库中查询对应的用户实体信息。
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
* session
* SessionIDIDIDID
* @RequestMapping "/session" "/users/session"
* @param request HttpServletRequestID
* @return RUsersEntity
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request) {
// 从当前请求的会话中获取名为“userId”的属性值并转换为整数类型该值作为用户的唯一标识用于后续查询用户信息。
Integer id = (Integer) request.getSession().getAttribute("userId");
// 通过用户服务层的selectById方法根据获取到的用户ID从数据库中查询对应的用户实体信息。
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
*
* 使使123456
* @PostMapping POST "/save" "/users/save"
* @param user UsersEntity
* @return R
*/
@PostMapping("/save")
public R save(@RequestBody UsersEntity user) {
// 以下这行代码被注释掉了,可能原本是用于对传入的用户实体进行数据合法性验证的逻辑,比如验证用户名、密码是否符合格式要求等,目前未生效。
// ValidatorUtils.validateEntity(user);
// 通过用户服务层的selectOne方法结合EntityWrapper构建的查询条件查找用户名与传入的user.getUsername()相等的用户记录从数据库中查询是否已存在相同用户名的用户若存在则返回对应的UsersEntity对象若不存在则返回null。
if (usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()))!= null) {
return R.error("用户已存在");
}
// 设置新用户的密码为固定值“123456”实际应用中这样直接设置密码不太安全可后续优化为更安全合理的密码设置方式比如进行密码加密等操作。
user.setPassword("123456");
// 调用用户服务层的insert方法将包含新用户信息的user对象插入到数据库中完成用户新增保存操作。
usersService.insert(user);
return R.ok();
}
/**
*
* UsersEntityupdateByIdID
* @RequestMapping "/update" "/users/update"
* @param user UsersEntity
* @return R
*/
@RequestMapping("/update")
public R update(@RequestBody UsersEntity user) {
// 以下这行代码被注释掉了,可能原本是用于对传入的用户实体进行数据合法性验证的逻辑,比如验证更新后的用户信息是否符合格式要求等,目前未生效。
// ValidatorUtils.validateEntity(user);
// 调用用户服务层的updateById方法根据传入的user对象中的ID通常是数据库中的主键ID找到对应的用户记录并将user对象中的所有属性值更新到数据库中对应的字段上完成用户信息更新操作。
usersService.updateById(user);
return R.ok();
}
/**
*
* ID
* @RequestMapping "/delete" "/users/delete"ID
* @param ids IDLong
* @return R
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids) {
// 调用用户服务层的deleteBatchIds方法传入要删除的用户ID列表通过Arrays.asList方法将数组转换为List集合形式具体取决于deleteBatchIds方法的参数要求执行批量删除数据库中对应用户记录的操作。
usersService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}

@ -78,6 +78,7 @@ public class YonghuController {
// 如果用户角色是"用户"则添加当前用户ID作为查询条件用于筛选当前用户相关的数据
else if("用户".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
params.put("yonghuDeleteStart",1);params.put("yonghuDeleteEnd",1);
// 设置默认的逻辑删除开始和结束标识用于筛选未删除的用户数据这里假设1表示未删除
params.put("yonghuDeleteStart",1);
params.put("yonghuDeleteEnd",1);
@ -105,6 +106,7 @@ public class YonghuController {
* @param request HttpServletRequest
* @return R
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
@ -134,6 +136,7 @@ public class YonghuController {
* @param request HttpServletRequest
* @return R使
*/
@RequestMapping("/save")
public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString());
@ -176,6 +179,7 @@ public class YonghuController {
* @param request HttpServletRequest
* @return R使
*/
@RequestMapping("/update")
public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString());
@ -216,6 +220,7 @@ public class YonghuController {
* @param ids ID
* @return R
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
@ -240,6 +245,7 @@ public class YonghuController {
* @param request HttpServletRequestID
* @return R
*/
@RequestMapping("/batchInsert")
public R save( String fileName, HttpServletRequest request){
logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
@ -359,6 +365,7 @@ public class YonghuController {
* @param request HttpServletRequest
* @return RTokenID
*/
@IgnoreAuth // 该注解可能表示此登录接口不需要进行权限认证(具体取决于该注解的实际定义和功能)
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
@ -399,6 +406,7 @@ public class YonghuController {
* @param yonghu YonghuEntity
* @return R使
*/
@IgnoreAuth // 该注解可能表示此注册接口不需要进行权限认证(具体取决于该注解的实际定义和功能)
@PostMapping(value = "/register")
public R register(@RequestBody YonghuEntity yonghu) {
@ -433,6 +441,7 @@ public class YonghuController {
* @param id ID
* @return R
*/
@GetMapping(value = "/resetPassword")
public R resetPassword(Integer id) {
YonghuEntity yonghu = new YonghuEntity();
@ -453,6 +462,7 @@ public class YonghuController {
* @param request HttpServletRequest使
* @return R
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request) {
@ -483,6 +493,7 @@ public class YonghuController {
* @param request HttpServletRequestID
* @return R
*/
@RequestMapping("/session")
public R getCurrYonghu(HttpServletRequest request) {
// 从当前请求的会话中获取名为“userId”的属性值并转换为整数类型该值作为用户的唯一标识用于后续查询用户信息
@ -512,6 +523,7 @@ public class YonghuController {
* @param request HttpServletRequest
* @return R退
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
// 调用HttpServletRequest对象的invalidate方法使当前会话失效即清除会话中存储的用户登录等相关信息
@ -529,6 +541,7 @@ public class YonghuController {
* @param request HttpServletRequest使
* @return R
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, HttpServletRequest request) {
@ -557,6 +570,7 @@ public class YonghuController {
* @param request HttpServletRequest使
* @return R
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id, HttpServletRequest request) {
logger.debug("detail方法:,,Controller:{},,id:{}", this.getClass().getName(), id);
@ -586,6 +600,7 @@ public class YonghuController {
* @param request HttpServletRequest使
* @return R使
*/
@RequestMapping("/add")
public R add(@RequestBody YonghuEntity yonghu, HttpServletRequest request) {
logger.debug("add方法:,,Controller:{},,yonghu:{}", this.getClass().getName(), yonghu.toString());

@ -12,11 +12,34 @@ import com.entity.UsersEntity;
/**
*
* 访BaseMapper<UsersEntity>
* BaseMapperID
* 便访
*
*/
public interface UsersDao extends BaseMapper<UsersEntity> {
/**
*
* Wrapper<UsersEntity>
* Wrapper
* UsersEntity
* @param wrapper
*
* @return UsersEntity
*/
List<UsersEntity> selectListView(@Param("ew") Wrapper<UsersEntity> wrapper);
/**
*
*
* PaginationWrapper<UsersEntity>
*
* UsersEntity
* @param page 便
* @param wrapper
* @return UsersEntity
*/
List<UsersEntity> selectListView(Pagination page, @Param("ew") Wrapper<UsersEntity> wrapper);
}

@ -11,11 +11,28 @@ import com.entity.view.YonghuView;
/**
* Dao
* BaseMapper<YonghuEntity>
* BaseMapper
* 便
*
* @author
* @author
*
*/
public interface YonghuDao extends BaseMapper<YonghuEntity> {
List<YonghuView> selectListView(Pagination page,@Param("params")Map<String,Object> params);
/**
*
* PaginationMap<String, Object>
* params
* YonghuViewYonghuView使
*
*
* @param page
* 使
* @param params Map"nameLike"
*
* @return YonghuView便
*/
List<YonghuView> selectListView(Pagination page, @Param("params") Map<String, Object> params);
}

@ -10,68 +10,140 @@ import com.baomidou.mybatisplus.enums.IdType;
/**
*
*/
// 通过 @TableName 注解指定该实体类对应的数据库表名为 "users",表明这个实体类与数据库中名为 "users" 的表存在映射关系,
// 在使用一些持久化框架(如 MyBatis-Plus 等)时,框架会依据这个映射关系进行数据库操作,例如将该实体类的对象持久化到对应表中,或者从表中查询数据填充到该类的对象里。
@TableName("users")
// 定义一个名为 UsersEntity 的类,实现了 Serializable 接口,意味着该类的对象可以被序列化和反序列化,
// 常用于在网络传输、对象持久化存储等场景中保证对象状态的保存和恢复,方便数据的传递与存储操作。
public class UsersEntity implements Serializable {
private static final long serialVersionUID = 1L;
// 通过 @TableId 注解指定了主键的生成策略为自动增长IdType.AUTO即数据库会自动为该字段分配唯一的整数值
// 这里的主键字段用于唯一标识数据库表中的每一条用户记录,方便后续对特定用户数据进行精准的查询、更新、删除等操作。
@TableId(type = IdType.AUTO)
private Integer id;
/**
*
* 使
// 通常具有唯一性,以区分不同的用户个体。
*/
private String username;
/**
*
*
// 而不只是简单的文本存储,在用户登录验证、修改密码等业务场景中会重点使用该字段。
*/
private String password;
/**
*
* "普通用户""管理员"
// 系统可以根据该字段来判断用户具备哪些操作权限,进而控制用户对不同功能模块的访问,在权限管理相关的业务逻辑中起到关键作用。
*/
private String role;
// 用于记录用户相关数据添加到系统中的时间,比如在统计用户增长趋势、查询某个时间段内新增的用户等业务场景下会用到该时间信息,
// 具体的时间格式和处理方式可能会根据业务需求以及相关的时间格式化注解来确定(当前代码中未展示相关格式化处理,但实际应用中可能会有)。
private Date addtime;
/**
* getter
* Java JavaBean 便 UsersEntity
* @return
*/
public String getUsername() {
return username;
}
/**
* setter
* Java JavaBean
*
* @param username
*/
public void setUsername(String username) {
this.username = username;
}
/**
* getter
* 访
// 可能会经过加密等处理后再进行相关操作,此处返回的是存储的密码字符串值。
* @return
*/
public String getPassword() {
return password;
}
/**
* setter
*
// 传入要设置的用户密码字符串值,用于更新用户对象的密码字段内容。
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
/**
* getter
* 便 UsersEntity
* @return
*/
public String getRole() {
return role;
}
/**
* setter
*
// 传入要设置的用户类型字符串值,用于更新用户对象的用户类型字段内容。
* @param role
*/
public void setRole(String role) {
this.role = role;
}
/**
* getter
*
// 返回存储的 Date 类型的添加时间对象。
* @return Date
*/
public Date getAddtime() {
return addtime;
}
/**
* setter
* Date
// 比如在数据从其他数据源导入到系统中时,需要准确设置该时间信息等场景下会用到。
* @param addtime Date
*/
public void setAddtime(Date addtime) {
this.addtime = addtime;
}
/**
* getter
* Java JavaBean 便 UsersEntity
* @return
*/
public Integer getId() {
return id;
}
/**
* setter
*
// 传入要设置的主键整数值,用于更新用户对象的主键字段内容。
* @param id
*/
public void setId(Integer id) {
this.id = id;
}
}
}

@ -26,274 +26,369 @@ import com.baomidou.mybatisplus.enums.IdType;
* @author
* @email
*/
// 通过 @TableName 注解指定该实体类对应的数据库表名为 "yonghu",表明这个实体类与数据库中名为 "yonghu" 的表存在映射关系,
// 在使用一些持久化框架(如 MyBatis-Plus 等)时,框架会依据这个映射关系进行数据库操作,例如将该实体类的对象持久化到对应表中,或者从表中查询数据填充到该类的对象里。
@TableName("yonghu")
// 定义一个名为 YonghuEntity 的泛型类,实现了 Serializable 接口,意味着该类的对象可以被序列化和反序列化,
// 常用于在网络传输、对象持久化存储等场景中保证对象状态的保存和恢复,方便数据的传递与存储操作。
public class YonghuEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
// 默认构造函数,用于创建一个空的 YonghuEntity 对象实例,在某些初始化场景(如通过反射创建对象等情况)下会被调用,
// 此时对象的各个属性会被赋予默认的初始值(例如基本数据类型会有对应的默认值,引用类型为 null 等)。
public YonghuEntity() {
public YonghuEntity() {
}
public YonghuEntity(T t) {
try {
BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// 带参数的构造函数,接受一个泛型参数 T尝试使用 BeanUtils.copyProperties 方法(通常来自 Spring 等相关框架提供的工具类)
// 将传入的参数对象 t 的属性值复制到当前的 YonghuEntity 对象中,实现基于已有对象来初始化当前对象的功能。
// 如果在属性复制过程中出现异常(比如属性没有对应的访问权限或者复制方法调用出现问题等),会打印异常堆栈信息方便排查问题,
// 不过当前只是简单打印,实际应用中可根据需求完善异常处理逻辑。
public YonghuEntity(T t) {
try {
BeanUtils.copyProperties(this, t);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @TableId IdType.AUTO
* @TableField "id"
*
*/
@TableId(type = IdType.AUTO)
@TableField(value = "id")
private Integer id;
/**
*
* 使 @TableField "username"
// 保证了实体类与数据库表之间在该字段上的映射关系,方便数据的读写操作,在用户登录、注册等业务场景中会频繁涉及对该字段的操作。
*/
@TableField(value = "username")
private String username;
/**
*
* @TableField "password"
// 由于密码涉及用户隐私安全,在实际应用中通常需要对其进行加密存储等额外的安全处理,而不只是简单的文本存储。
*/
@TableField(value = "password")
private String password;
/**
*
* @TableField "yonghu_name"
// 方便在系统中展示用户的个人信息,比如在用户资料页面、用户列表展示等地方呈现给用户或者管理员查看。
*/
@TableField(value = "yonghu_name")
private String yonghuName;
/**
*
*
// 通过 @TableField 注解与数据库表中的 "yonghu_photo" 列关联,以便在需要展示用户头像的界面或者相关业务逻辑中进行数据操作。
*/
@TableField(value = "yonghu_photo")
private String yonghuPhoto;
/**
*
* @TableField "yonghu_phone"
// 在诸多业务场景中都有重要作用,例如身份验证、短信通知、找回密码等操作时作为与用户联系的关键方式。
*/
@TableField(value = "yonghu_phone")
private String yonghuPhone;
/**
*
* @TableField "yonghu_email"
// 同样可用于系统与用户之间的沟通交流,像发送重要通知、密码重置链接等业务场景都会用到该字段存储的邮箱信息。
*/
@TableField(value = "yonghu_email")
private String yonghuEmail;
/**
*
* 0 1
// 通过 @TableField 注解与数据库表中的 "sex_types" 列关联,便于系统根据性别进行相关的统计、展示或者业务逻辑处理。
*/
@TableField(value = "sex_types")
private Integer sexTypes;
/**
*
*
// 通过 @TableField 注解与数据库表中的 "new_money" 列建立映射关系,以保证余额数据在实体类与数据库之间的正确读写。
*/
@TableField(value = "new_money")
private Double newMoney;
/**
*
* 1 0
// 借助 @TableField 注解与数据库表中的 "yonghu_delete" 列相对应,相比于直接从数据库中物理删除数据,软删除便于数据的恢复以及相关业务逻辑的处理,同时可以保留数据的历史记录等信息。
*/
@TableField(value = "yonghu_delete")
private Integer yonghuDelete;
/**
*
* @JsonFormat JSON
// @DateTimeFormat 注解则可能用于在接收前端传入的时间格式数据时进行格式化处理,以便正确地将数据绑定到该字段上,
// 并且通过 @TableField 注解与数据库表中的 "create_time" 列关联,同时设置了 fill = FieldFill.INSERT 表示在插入数据时该字段会自动填充相应的值(通常是当前时间),
// 该时间信息在很多业务场景中都有作用,比如按照创建时间排序、查询某个时间段内创建的用户等。
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "create_time",fill = FieldFill.INSERT)
@JsonFormat(locale = "zh", timezone = "GMT + 8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
*
* 访getter Java JavaBean 便 YonghuEntity
*
* @return
*/
public Integer getId() {
return id;
}
/**
*
*/
/**
*
* setter Java JavaBean
*
* @param id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
*
* 访getter 便 YonghuEntity 使
* @return
*/
public String getUsername() {
return username;
}
/**
*
*/
/**
*
* setter
*
* @param username
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
*
* 访getter
*
* @return
*/
public String getPassword() {
return password;
}
/**
*
*/
/**
*
* setter
*
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
*
* 访getter 便
* @return
*/
public String getYonghuName() {
return yonghuName;
}
/**
*
*/
/**
*
* setter 使
*
* @param yonghuName
*/
public void setYonghuName(String yonghuName) {
this.yonghuName = yonghuName;
}
/**
*
*/
*
* 访getter
*
* @return
*/
public String getYonghuPhoto() {
return yonghuPhoto;
}
/**
*
*/
/**
*
* setter
*
* @param yonghuPhoto
*/
public void setYonghuPhoto(String yonghuPhoto) {
this.yonghuPhoto = yonghuPhoto;
}
/**
*
*/
*
* 访getter
*
* @return
*/
public String getYonghuPhone() {
return yonghuPhone;
}
/**
*
*/
/**
*
* setter
*
* @param yonghuPhone
*/
public void setYonghuPhone(String yonghuPhone) {
this.yonghuPhone = yonghuPhone;
}
/**
*
*/
*
* 访getter
*
* @return
*/
public String getYonghuEmail() {
return yonghuEmail;
}
/**
*
*/
/**
*
* setter
*
* @param yonghuEmail
*/
public void setYonghuEmail(String yonghuEmail) {
this.yonghuEmail = yonghuEmail;
}
/**
*
*/
*
* 访getter
* 0 1
* @return
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
/**
*
* setter
*
* @param sexTypes
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
*
* 访getter
*
* @return
*/
public Double getNewMoney() {
return newMoney;
}
/**
*
*/
/**
*
* setter
*
* @param newMoney
*/
public void setNewMoney(Double newMoney) {
this.newMoney = newMoney;
}
/**
*
*/
*
* 访getter
*
* @return
*/
public Integer getYonghuDelete() {
return yonghuDelete;
}
/**
*
*/
*
* JavaBean访getter
*
* @return
*/
public void setYonghuDelete(Integer yonghuDelete) {
this.yonghuDelete = yonghuDelete;
}
/**
*
*/
*
* 访getterJavaBean
*
* Date @JsonFormat @DateTimeFormat 使
* @return Date
*/
public Date getCreateTime() {
return createTime;
}
/**
*
*/
/**
*
* JavaBeansetter
*
* @DateTimeFormat
* @param createTime Date
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* toString
* toStringJava便使
*
* 使便
* @return "Yonghu{" + + "}"
*/
@Override
public String toString() {
return "Yonghu{" +
"id=" + id +
", username=" + username +
", password=" + password +
", yonghuName=" + yonghuName +
", yonghuPhoto=" + yonghuPhoto +
", yonghuPhone=" + yonghuPhone +
", yonghuEmail=" + yonghuEmail +
", sexTypes=" + sexTypes +
", newMoney=" + newMoney +
", yonghuDelete=" + yonghuDelete +
", createTime=" + createTime +
"}";
"id=" + id +
", username=" + username +
", password=" + password +
", yonghuName=" + yonghuName +
", yonghuPhoto=" + yonghuPhoto +
", yonghuPhone=" + yonghuPhone +
", yonghuEmail=" + yonghuEmail +
", sexTypes=" + sexTypes +
", newMoney=" + newMoney +
", yonghuDelete=" + yonghuDelete +
", createTime=" + createTime +
"}";
}
}

@ -12,236 +12,290 @@ import java.io.Serializable;
/**
*
*
* entity
*
* entity
* 使
* ModelAndView model
* ModelAndViewmodel
*/
public class YonghuModel implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*
*/
private Integer id;
/**
*
* 使便
*/
private String username;
/**
*
* 访
*/
private String password;
/**
*
* 便
*/
private String yonghuName;
/**
*
*
*/
private String yonghuPhoto;
/**
*
*
*/
private String yonghuPhone;
/**
*
*
*/
private String yonghuEmail;
/**
*
* 01便
*/
private Integer sexTypes;
/**
*
*
*/
private Double newMoney;
/**
*
* 10
* 便
*/
private Integer yonghuDelete;
/**
*
* @JsonFormatJSON
* @DateTimeFormat便
*
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@JsonFormat(locale = "zh", timezone = "GMT + 8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
private Date createTime;
/**
*
*/
*
* 访getterJavaJavaBean便
* @return
*/
public Integer getId() {
return id;
}
/**
*
*/
*
* setterJavaJavaBean
*
* @param id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
*/
*
* 访getter便
* @return 使
*/
public String getUsername() {
return username;
}
/**
*
*/
*
* setter
* @param username
*/
public void setUsername(String username) {
this.username = username;
}
/**
*
*/
*
* 访getter
*
* @return
*/
public String getPassword() {
return password;
}
/**
*
*/
*
* setter
*
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
*
* 访getter便
* @return
*/
public String getYonghuName() {
return yonghuName;
}
/**
*
*/
*
* setter使
* @param yonghuName
*/
public void setYonghuName(String yonghuName) {
this.yonghuName = yonghuName;
}
/**
*
*/
*
* 访getter
* @return
*/
public String getYonghuPhoto() {
return yonghuPhoto;
}
/**
*
*/
*
* setter
* @param yonghuPhoto
*/
public void setYonghuPhoto(String yonghuPhoto) {
this.yonghuPhoto = yonghuPhoto;
}
/**
*
*/
*
* 访getter
* @return
*/
public String getYonghuPhone() {
return yonghuPhone;
}
/**
*
*/
*
* setter
* @param yonghuPhone
*/
public void setYonghuPhone(String yonghuPhone) {
this.yonghuPhone = yonghuPhone;
}
/**
*
*/
*
* 访getter
* @return
*/
public String getYonghuEmail() {
return yonghuEmail;
}
/**
*
*/
*
* setter
* @param yonghuEmail
*/
public void setYonghuEmail(String yonghuEmail) {
this.yonghuEmail = yonghuEmail;
}
/**
*
*/
*
* 访getter
* @return 01
*/
public Integer getSexTypes() {
return sexTypes;
}
/**
*
*/
*
* setter
*
* @param sexTypes
*/
public void setSexTypes(Integer sexTypes) {
this.sexTypes = sexTypes;
}
/**
*
*/
*
* 访getter
* @return
*/
public Double getNewMoney() {
return newMoney;
}
/**
*
*/
*
* setter
*
* @param newMoney
*/
public void setNewMoney(Double newMoney) {
this.newMoney = newMoney;
}
/**
*
*/
*
* 访getter
*
* @return 10
*/
public Integer getYonghuDelete() {
return yonghuDelete;
}
/**
*
*/
*
* setter
*
* @param yonghuDelete
*/
public void setYonghuDelete(Integer yonghuDelete) {
this.yonghuDelete = yonghuDelete;
}
/**
*
*/
*
* 访getter
* @JsonFormat@DateTimeFormat
* @return Date
*/
public Date getCreateTime() {
return createTime;
}
/**
*
*/
*
* setter
* @DateTimeFormat
* @param createTime Date
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
}

@ -12,54 +12,65 @@ import java.util.Date;
/**
*
*
* 使
* 使
* 便
*/
@TableName("yonghu")
// 通过 @TableName 注解指定了该实体类对应的数据库表名为 "yonghu",通常在与数据库交互的框架(如 MyBatis-Plus 等)中,
// 用于建立实体类与数据库表之间的映射关系,框架可以根据这个注解来确定操作的具体表。
public class YonghuView extends YonghuEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String sexValue;
private static final long serialVersionUID = 1L;
/**
*
* "男""女" YonghuEntity
* 便
*/
private String sexValue;
/**
*
* YonghuView
*/
public YonghuView() {
}
/**
* YonghuEntity
* YonghuEntity YonghuEntity YonghuView
* 使 BeanUtils.copyProperties Spring
* 便 YonghuEntity YonghuView
* YonghuView sexValue
* @param yonghuEntity YonghuEntity YonghuView
*/
public YonghuView(YonghuEntity yonghuEntity) {
try {
BeanUtils.copyProperties(this, yonghuEntity);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
// 如果在属性复制过程中出现异常(比如属性没有对应的访问权限或者复制方法调用出现问题等),
// 则会打印异常堆栈信息,方便开发人员排查问题所在,当前只是简单地将异常打印出来,实际应用中可根据需求进行更完善的异常处理逻辑。
e.printStackTrace();
}
}
/**
*
* sexValue 访getter Java JavaBean
* 便 YonghuView "男""女"
* @return
*/
public String getSexValue() {
return sexValue;
}
/**
*
*/
public String getSexValue() {
return sexValue;
}
/**
*
*/
public void setSexValue(String sexValue) {
this.sexValue = sexValue;
}
}
/**
*
* sexValue setter Java JavaBean
* YonghuView
* @param sexValue YonghuView sexValue
*/
public void setSexValue(String sexValue) {
this.sexValue = sexValue;
}
}

@ -15,11 +15,45 @@ import com.utils.PageUtils;
* @author yangliyuan
* @date 20191010 9:18:20
*/
// 定义了一个名为 UsersService 的接口,该接口继承自 IService<UsersEntity>,意味着它会继承 IService 接口中针对 UsersEntity 类型的一系列通用的服务层方法,
// 比如常见的根据主键查询、插入、更新、删除等基础业务操作方法,在此基础上又自定义了一些特定于用户业务相关的方法,用于满足更复杂的业务需求。
// 通常会有对应的实现类来具体实现这些方法逻辑,以实现与数据库或其他数据源交互来完成相应的业务功能。
public interface UsersService extends IService<UsersEntity> {
/**
*
* Map PageUtils
* PageUtils 便
*
*
* @param params Map "pageNum" "pageSize"
*
* @return PageUtils
*/
PageUtils queryPage(Map<String, Object> params);
/**
*
* Wrapper<UsersEntity> Wrapper
* UsersEntity 便
*
*
* @param wrapper
* @return UsersEntity
*/
List<UsersEntity> selectListView(Wrapper<UsersEntity> wrapper);
/**
*
* queryPage(Map<String, Object> params) Wrapper<UsersEntity>
* params
* 使
*
* @param params Map queryPage params
* @param wrapper params
* @return PageUtils 使
*/
PageUtils queryPage(Map<String, Object> params, Wrapper<UsersEntity> wrapper);
}

@ -15,5 +15,9 @@ public interface YonghuService extends IService<YonghuEntity> {
* @param params
* @return
*/
// 定义了一个名为 `queryPage` 的方法,它接收一个 `Map<String, Object>` 类型的参数 `params`
// 该方法的作用是根据传入的 `params` 参数中包含的各种查询条件及分页相关信息,查询相应的分页数据,
// 并返回一个 `PageUtils` 类型的对象,`PageUtils` 类通常用于封装分页相关的属性(如总记录数、每页记录数、当前页码以及具体的分页数据列表等),
// 以便后续进行分页展示或者其他与分页数据相关的业务操作。例如在用户管理系统中,通过传入不同的查询条件和分页参数,获取对应分页的用户数据列表等场景会调用此方法。
PageUtils queryPage(Map<String, Object> params);
}
Loading…
Cancel
Save