基于MyBatis实现单表基类框架使用说明1.0

数据库表设计

数据库表在设计中必须带有如下字段,此为mysql数据,如使用oracle数据库请替换对应数据类型

字段类型说明
idvarchar(40)主键
creatorvarchar(40)创建人
create_timedatetime创建时间
modifiervarchar(40)修改人
modified_timedatetime修改时间
tsdatetime事件戳
drvarchar(1)删除标记

代码部分

一、实体类相关

1、实体类继承 AbstractBaseEntity基类
2、类注解 @TableName(name = " ") name中填写数据库表名
3、属性注解 @Exclude 该属性不参与持久化
4、实体类全类名必须为 aaa.aaa.entity.Aaaa 格式,同时全类名中只允许出现一次entity包名

示例代码:

package *.*.demon.entity;

import com.*.base.annotation.Exclude;
import com.*.base.annotation.TableName;
import com.*.base.entity.AbstractBaseEntity;

@TableName(name = "demon")
public class Demon extends AbstractBaseEntity {

    private String code;

    private String name;

    private String sex;

    private Integer age;

    @Exclude
    private String option;

二、service类与mapper类相关

1、service类继承AbstractBaseService基类
2、mapper接口继承BaseMapper接口
3、mapper全类名必须为 aaa.aaa.mapper.AaaaMapper格式,同时全类名中只允许出现一次mapper包名

实例代码

@Service
public class DemoService extends AbstractBaseService<Demo, DemoMapper> {
}
@MyBatisDao
public interface DemoMapper extends BaseMapper<Demo> {
}

三、调用API相关实例

在controller层调用service基类方法,无XML实现单表基本操作。

package com.*.demo.web;

import com.*.base.entity.RequestPage;
import com.*.demo.entity.Demo;
import com.*.demo.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
@RequestMapping("demoWeb")
public class DemoWeb {

    @Autowired
    private DemoService demoService;

    @RequestMapping("add")
    public Demo add(){
        Demo demo = new Demo();
        demo.setCode("123");
        demo.setName("测试");
        demo.setSex("男");
        demo.setAge(12);
        return demoService.save(demo);
    }

    @RequestMapping("update")
    public Demo update(){
        Demo demo = new Demo();
        demo.setId("7bb977db-6934-44fe-9162-0614f1d3393e");
        demo.setCode("123修改");
        demo.setName("测试修改");
        demo.setSex("女");
        demo.setAge(20);
        return demoService.update(demo);
    }

    @RequestMapping("findOne")
    public Demo findOne(){return demoService.findOne("7bb977db-6934-44fe-9162-0614f1d3393e");}

    @RequestMapping("findAll")
    public List<Demo> findAll(){return demoService.findAll();}

    @RequestMapping("findPage")
    public RequestPage findPage(){return demoService.findAll(new RequestPage(1,15));}

    @RequestMapping("delete")
    public void delete(){demoService.delete("4f1d7c0d");}

    @RequestMapping("delAll")
    public void delAll(){demoService.deleteAll("78aa00b5,7ca25f3a,913c0c52");}
}

四、未完成部分

  • 添加自定义数据库字段名称注解
  • 查询方法添加排序与条件查询
  • 编写BaseController基类,真正实现后台无代码
  • 主子表的级联保存,单条数据主子的级联查询
  • 编写前端模版代码,配合后台,实现自动生成网页的目的
  • 分页总条数查询优化

五、鸣谢

此框架是基于mybatis的@InsertProvider @UpdateProvider @SelectProvider 与 Interceptor拦截器基础上实现的,在这过程中遇到查询结果封装问题,特鸣谢 @ YingTao8 @weixin_34228387 两位文章的帮助

mybatis 拓展 – 通用mapper 和 动态 resultMap
mybatis抽取基类BaseMapper(通用增/删/改/查)
本文实例代码及具体实现代码已上传 github有兴趣的同学欢迎交流学习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值