基於MyBatis實現單表基類框架使用說明1.0

數據庫表設計

數據庫表在設計中必須帶有如下字段,此爲mysql數據,如使用oracle數據庫請替換對應數據類型

字段 類型 說明
id varchar(40) 主鍵
creator varchar(40) 創建人
create_time datetime 創建時間
modifier varchar(40) 修改人
modified_time datetime 修改時間
ts datetime 事件戳
dr varchar(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有興趣的同學歡迎交流學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章