java crud_关于java:Crud-controller-通用方法层面思考

本文探讨如何在Java中创建通用的CRUD Controller,通过示例展示了如何使用注解和Mybatis进行数据库操作,包括实体类配置、Mapper接口定义以及Spring Boot的配置。文章还提供了启动类和测试用例,展示如何执行添加、查询、编辑和删除等操作。
摘要由CSDN通过智能技术生成

Crud controller 通用办法层面思考

在这篇文章之前, 我提出了一个 crud 的模板工程. 次要目标是去掉 数据库和 redis 这两层的通用代码. 在去掉这一层之后想尝试去掉 controller 类. 对这个想法进行了实现

我的项目地址: https://github.com/huifer/cru…

分支: dev

配置

依赖配置

本例为 mybatis 操作

0.0.5-Releases-hot-fix dev 开发分支版本. 后续会批改

com.github.huifer

for-controller

0.0.5-Releases-hot-fix

compile

com.github.huifer

for-mybatis

0.0.5-Releases-hot-fix

实体类配置

@CrudController(uri = "/project/int", idType = Integer.class)

public class ProjectInt extends AbsEntity implements Serializable {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

@CrudController(uri = "/project/str", idType = String.class)

public class ProjectStr extends AbsEntity implements Serializable {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

mapper

@Mapper

public interface ProjectIntMapper extends A {

@Override

@Insert("INSERT INTO `project_int`(`name`) VALUES (#{name} ) ")

int insertSelective(ProjectInt record);

@Override

@Select("select * from project_int where id = #{id,javaType=INTEGER} ")

ProjectInt selectByPrimaryKey(@Param("id") Integer integer);

@Override

@Delete("DELETE FROM `dest`.`project_int` WHERE `id` = #{integer} ")

int deleteByPrimaryKey(Integer integer);

@Override

@Update("UPDATE `dest`.`project_int` SET `name` = #{name} WHERE `id`= #{id} ")

int updateByPrimaryKeySelective(ProjectInt record);

}

@Mapper

public interface ProjectStrMapper extends A {

@Override

@Insert("INSERT INTO `dest`.`project_str`(`name`) VALUES (#{name} ) ")

int insertSelective(ProjectStr record);

@Override

@Select("select * from project_str where id = #{integer} ")

ProjectStr selectByPrimaryKey(String integer);

@Override

@Delete("DELETE FROM `dest`.`project_str` WHERE `id` = #{integer} ")

int deleteByPrimaryKey(String integer);

@Override

@Update("UPDATE `dest`.`project_str` SET `name` = #{name} WHERE `id`= #{id} ")

int updateByPrimaryKeySelective(ProjectStr record);

}

Spring Boot 配置

@Configuration

public class ForControllerConfig {

@Bean

FilterRegistrationBean myFilterRegistration() {

FilterRegistrationBean frb = new FilterRegistrationBean();

frb.setFilter(new MyFilter());

frb.setUrlPatterns(Arrays.asList("/*"));

return frb;

}

@Bean

ServletRegistrationBean myServletRegistration() {

ServletRegistrationBean srb = new ServletRegistrationBean();

srb.setServlet(new OcaServlet());

srb.setUrlMappings(Arrays.asList("/rest/*"));

return srb;

}

@Bean

ServletListenerRegistrationBean myServletListener() {

ServletListenerRegistrationBean srb =

new ServletListenerRegistrationBean<>();

srb.setListener(new MyServletListener());

return srb;

}

}

public class MyFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest request,

ServletResponse response, FilterChain chain)

throws IOException, ServletException {

String url = request instanceof HttpServletRequest ?

((HttpServletRequest) request).getRequestURL().toString() : "N/A";

System.out.println("from filter, processing url: " + url);

chain.doFilter(request, response);

}

@Override

public void destroy() {

}

}

public class MyServletListener implements ServletContextListener {

@Override

public void contextInitialized (ServletContextEvent sce) {

System.out.println("from ServletContextListener: " +

" context initialized");

}

@Override

public void contextDestroyed (ServletContextEvent sce) {

}

}

启动类

@SpringBootApplication

@EnableCrudController(scanPackages = {"com.github.huifer.ctr"})

@EnableCrudTemplate(daoType= DaoType.MYBATIS)

public class ForControllerApp {

public static void main(String[] args) {

SpringApplication.run(ForControllerApp.class, args);

}

}

测试方法

localhost:9123/rest/project/int/add

{

"name": "312"

}

localhost:9123/rest/project/int/byId

{

"id": "37"

}

localhost:9123/rest/project/int/editor

{

"id": "37",

"name":"asdasd"

}

localhost:9123/rest/project/int/del

{

"id": "37"

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值