README.md
平台简介(springboot + shiro + thymeleaf + layui)
由于反复写增删改查,发现中间有很多冗余代码,看了很多优秀的开源项目但是发现没有合适的。 于是利用空闲时间开发了这套封装好的增删改查,可减少开发时间,加快开发效率。
本人性别男,一依是女儿的名字(寓意:一心依靠耶和华)
- spring boot 整合shiro
- 执行com.yiyi.web.generater.utils.CodeGenerator 可以自动生成代码
https://blog.csdn.net/qq_38225558/article/details/101073962
@TOC
1.创建pojo
package com.yiyi.web.domain;
import com.yiyi.framework.annotate.TgAnnounce;
import lombok.Data;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.List;
import java.util.Set;
/**
* @Function:
* @author: yiyi
* @create: 2020/9/23 16:47
**/
@Table(name="yy_user")
@Data
public class User {
@Id
@TgAnnounce(title = "编号",type = Type.HIDDEN ,isCreateShow = false)
private Long id;
@TgAnnounce(title = "用户名",type = Type.TEXT)
private String userName;
@TgAnnounce(title = "密码",type = Type.PASSWORD,isIndexShow = false)
private String password;
@TgAnnounce(title = "头像",type = Type.UPLOAD)
private String img;
@TgAnnounce(title = "性别",type = Type.RADIO,option = "1=男,2=女")
private String sex;
@TgAnnounce(title = "生日",type = Type.DATE)
private String birthday;
@TgAnnounce(title = "学历",type = Type.SELECT,option = "1=初中,2=高中,3=大专,4=本科")
private String education;
@TgAnnounce(title = "选择角色",type = Type.CHECKBOX,isIndexShow = false, option = "RoleService@getListSelect")
private List<Long> roleList;
/**
* 用户对应的角色集合
*/
private Set<Role> roles;
}
1.1 声明
@TgAnnounce 在属性上使用
title:标题
type: NUMBER(数字),TEXT(文本),RADIO(单选),UPLOAD(上传),DATE(日期),HIDDEN(隐藏),SELECT(下拉框),TEXTAREA(多文本框)分别代表不同的文板框
option : 选项
- 1.可填写 字符串 例如:1=目录,2=菜单,3=按钮
- 2.调用函数 例如:SchoolService@getListSelect
verify:校验
- required (必填项)
- phone(手机号)
- email(邮箱)
- url(网址)
- number(数字)
- date(日期)
- identity(身份证)
- 自定义值
- 支持多条规则的验证 (verify="required|phone|number")
isIndexShow :是否在首页上展示
isCreateShow :是否在创建上展示
isUpdateShow :是否在更新上展示
2.创建 mapper
直接继承 Mapper ,T 就是 pojo 表名
package com.tiange.curd.mapper;
import com.tiange.curd.domain.UserInfoMiddle;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* @Function:持久层用户基本信息表
* @author: wangmutian
* @create: 2019-12-11 13:42
**/
public interface UserInfoMapper extends Mapper<UserInfoMiddle> {
}
3.创建service
直接继承 BaseCurdServicelmpl <pojo类名,pojo类名相应mapper>
package com.tiange.curd.service;
import com.tiange.curd.domain.UserInfoMiddle;
import com.tiange.curd.mapper.UserInfoMapper;
import org.springframework.stereotype.Service;
/**
* @Function:
* @author: WANGMUTIAN
* @create: 2019-12-11 13:46
**/
@Service
public class UserInfoService extends BaseCurdServicelmpl<UserInfoMiddle, UserInfoMapper>{
}
4.创建Controller
package com.tiange.curd.web.system;
import com.tiange.curd.domain.UserInfoMiddle;
import com.tiange.curd.service.UserInfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Date;
/**
* @Function:用户基本信息控制层
* @author: wangmutian
* @create: 2019-12-11 09:38
**/
@Controller
@RequestMapping("/userInfo")
public class UserInfoController extends BaseCurdController<UserInfoService, UserInfoMiddle> {
@Override
protected Class<?> tableClass() {
return UserInfoMiddle.class;
}
@Override
protected String title() {
return "用户列表";
}
@Override
public String url() {
return "/userInfo";
}
@Override
protected String majorKey() {
return "userId";
}
}
! 注意 pojo 禁止写冗余字段 ~