springboot+gradle项目

1 首先创建一个数据表实力user

他是一个复合对像(一般直接如下操作不推荐)

//需要配置
/*# mybatis
mybatis.configuration.map-underscore-to-camel-case: true
spring.jackson.date-format: yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone: GMT+8*/


//学生类
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MonitorPanelDO {

    private Long id;

    @NotBlank(message = "姓名不能为空")
    @Length(max = 64, message = "名称太长")
    private String name;

    @NotNull(message = "性别不能为空")
    private Integer age;

    private Integer updateSeq; //防止重复覆盖

    private Boolean removed; //是否离校

    @NotBlank(message = "年级不能为空")
    private String class;


    @NotNull(message = "学科不能为空")
    @Valid
    private List<Subject> subjects;


    private String description;

    private Timestamp creationTime;

    private String creationName;

    private Timestamp updateTime;

    private String updateName;
}
//学科类
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MonitorPanelDO {

    private Long id;

    @NotBlank(message = "学科名不能为空")
    @Length(max = 64, message = "名称太长")
    private String name;

    @NotNull(message = "成绩不能为空")
    private Double grade;

    @NotBlank(message = "任课老师名不能为空")
    private String teacherName;

    private Timestamp creationTime;

    private String creationName;

}

Dao

//实体类包含List<Class> 需要用BaseTypeHandler进行处理
public class SubjectHandler extends BaseTypeHandler<List<Subject>> {

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, List<Subject> parameter, JdbcType jdbcType) throws SQLException {
        ps.setString(i, new Gson().toJson(parameter));
    }

    @Override
    public List<Subject> getNullableResult(ResultSet rs, String columnName) throws SQLException {
        String json = rs.getString(columnName);
        if (!Strings.isNullOrEmpty(json)) {
            return new Gson().fromJson(json, new TypeToken<List<Subject>>() {}.getType());
        }
        return null;
    }

    @Override
    public List<Subject> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        String json = rs.getString(columnIndex);
        if (!Strings.isNullOrEmpty(json)) {
            return new Gson().fromJson(json, new TypeToken<List<Subject>>() {}.getType());
        }
        return null;
    }

    @Override
    public List<Subject> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        String json = cs.getString(columnIndex);
        if (!Strings.isNullOrEmpty(json)) {
            return new Gson().fromJson(json,new TypeToken<List<Subject>>() {}.getType());
        }
        return null;
    }
}


//
@Mapper
public interface IPanelDao {

    @Select("<script> " +
            "SELECT * FROM User WHERE id = #{id} " +
            "</script>")
    @Results({
            @Result(property = "allSubject", column = "all_subject",
                    jdbcType = JdbcType.VARCHAR,
                    typeHandler = SubjectHandler.class)
    })
   User getById(Long id);



  


    @Select("<script>" +
            "SELECT * FROM User " +
            "WHERE 1 = 1 " +
            "<if test='ids != null'> " +
            " AND id not in " +
            " <foreach close=')' collection='ids' index='index' item='id' open='(' separator=','> " +
            " #{id}" +
            "</foreach> " +
            "</if> " +
            "<if test='keyword != null'> " +
            "AND ( " +
            "name LIKE concat('%',#{keyword},'%') " +
            "OR id LIKE concat(#{keyword},'%') " +
            "OR description LIKE concat('%',#{keyword},'%') " +
            ") " +
            "</if> " +
      
            "ORDER BY creation_time  desc " +
            "</script>")
    @Results({
            @Result(property = "allSubject", column = "all_subject",
                    jdbcType = JdbcType.VARCHAR,
                    typeHandler = SubjectHandler.class)
    })
    List<User> getBasePanelByKeyword(@Param("keyword") String keyword, @Param("ids") List<Long> ids);



    @Insert({"INSERT INTO User (name, age,class,allSubject,description, creation_time, creation_name,update_time,update_name) " +
            "VALUES (#{name},#{age}, #{class}, '+
            "#{allSubject, javaType=com.ht.info.model.dto.Subject, typeHandler= com.ht.info.model.dao.handler.SubjectHandler}, " +
     
            " #{description}, #{creationTime}, #{creationName}, #{updateTime},#{updateName})"})
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
     @Results({
            @Result(property = "allSubject", column = "all_subject",
                    jdbcType = JdbcType.VARCHAR,
                    typeHandler = SubjectHandler.class)
    })
    Long addUser(User user);


    @Update("UPDATE User SET name = #{name},age= #{age},class = #{class},update_seq = #{updateSeq} + 1, " +
            "allSubject =  #{allSubject, javaType=com.ht.info.model.dto.Subject, typeHandler= com.ht.info.model.dao.handler.SubjectHandler}, " +
       
            " description = #{description}, update_time = #{updateTime}, update_name = #{updateName} " +
            "WHERE id = #{id} AND update_seq = #{updateSeq}")
    @Results({
            @Result(property = "allSubject", column = "all_subject",
                    jdbcType = JdbcType.VARCHAR,
                    typeHandler = SubjectHandler.class)
    })
    int updateUser(User user);


    @Delete("DELETE  FROM User WHERE id = #{id} and removed = true")
    int deleteById(Long Id);

    }

service层

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class PageQuery {

    private String keyword;

    private Integer pageNo;

    private Integer pageSize;


    private Long startTime;

    private Long endTime;

    private Timestamp startTimestamp;

    private Timestamp endTimestamp;


    public PageQuery(String keyword, Integer pageNo, Integer pageSize) {
        this.keyword = keyword;
        this.pageNo = pageNo;
        this.pageSize = pageSize;
    }


    public void setStartTime(Long startTime) {
        if (startTime != null) {
            this.startTimestamp = new Timestamp(startTime);
        }
    }


    public void setEndTime(Long endTime) {
        if (endTime != null) {
            this.endTimestamp = new Timestamp(endTime);
        }
    }

}



//需要配置分页插件# 分页配置
/*pagehelper:
  helperDialect: mysql
  offsetAsPageNum: true
  rowBoundsWithCount: true
  reasonable: true
  returnPageInfo: true
*/

@Service
public class UserService implements IUserService { 
    @Autowired
    private UserDao userDao;
    
    @Override
    public PageBean<User> findAdminByPage(PageQuery query) {
        Integer currentPage = query.getPageNo();
        Integer pageSize = query.getPageSize();
        Page<User> page = PageHelper.startPage(currentPage, pageSize);
        List<User> adminDOList =userDao.searchList(query.getKeyword());
        PageBean<User> pageBean = new PageBean<>(currentPage, pageSize, page.getTotal());
        pageBean.setItems(adminDOList);
        return pageBean;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值