diff --git a/axzo-common-datas/axzo-data-mybatis-plus/pom.xml b/axzo-common-datas/axzo-data-mybatis-plus/pom.xml new file mode 100644 index 0000000..0aff5f7 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + + axzo-common-datas + cn.axzo.framework.data + 1.0.0-SNAPSHOT + + + axzo-data-mybatis-plus + Axzo Common Data Mybatis Plus + + + + + org.springframework.boot + spring-boot-autoconfigure + + + + org.springframework + spring-context + + + org.springframework + spring-tx + + + + + com.baomidou + mybatis-plus-core + + + com.baomidou + mybatis-plus-extension + + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + \ No newline at end of file diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/EntityMetaObjectHandler.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/EntityMetaObjectHandler.java new file mode 100644 index 0000000..22ab002 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/EntityMetaObjectHandler.java @@ -0,0 +1,56 @@ +package cn.axzo.framework.data.mybatisplus.config; + +import cn.axzo.framework.data.mybatisplus.model.BaseEntity; +import cn.axzo.framework.data.mybatisplus.model.BaseOwnEntity; +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; + +import java.util.Date; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 11:34 + * @Description: + */ +public class EntityMetaObjectHandler implements MetaObjectHandler { + + @Override + public void insertFill(MetaObject metaObject) { + Object entity = metaObject.getOriginalObject(); + if (entity instanceof BaseEntity) { + //默认有值不覆盖 + this.fillStrategy(metaObject, "createAt", new Date()); + this.fillStrategy(metaObject, "updateAt", new Date()); + } + + if (entity instanceof BaseOwnEntity) { + //默认有值不覆盖 + this.fillStrategy(metaObject, "createBy", getAcctId()); + this.fillStrategy(metaObject, "updateBy", getAcctId()); + } + } + + @Override + public void updateFill(MetaObject metaObject) { + Object entity = metaObject.getOriginalObject(); + if (entity instanceof BaseEntity) { + //强制覆盖 + this.setFieldValByName("updateAt", new Date(), metaObject); + } + + if (entity instanceof BaseOwnEntity) { + //强制覆盖 + this.setFieldValByName("updateBy", getAcctId(), metaObject); + } + } + + /** + * 获取当前用户账户id + * + * @return + */ + private Long getAcctId() { + return 1L; + } + +} diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/MybatisPlusAutoConfiguration.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/MybatisPlusAutoConfiguration.java new file mode 100644 index 0000000..f364bee --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/MybatisPlusAutoConfiguration.java @@ -0,0 +1,30 @@ +package cn.axzo.framework.data.mybatisplus.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 10:40 + * @Description: + */ +@EnableTransactionManagement +@Configuration +public class MybatisPlusAutoConfiguration { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } + + @Bean + public EntityMetaObjectHandler EntityMetaObjectHandler () { + return new EntityMetaObjectHandler(); + } +} diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseDataEntity.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseDataEntity.java new file mode 100644 index 0000000..c538d6b --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseDataEntity.java @@ -0,0 +1,12 @@ +package cn.axzo.framework.data.mybatisplus.model; + +import com.baomidou.mybatisplus.extension.activerecord.Model; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 10:29 + * @Description: 支持类 + */ +public abstract class BaseDataEntity > extends BaseEntity{ + +} diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseEntity.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseEntity.java new file mode 100644 index 0000000..61e6653 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseEntity.java @@ -0,0 +1,41 @@ +package cn.axzo.framework.data.mybatisplus.model; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 10:26 + * @Description: 实体基础类 + */ +@Data +public abstract class BaseEntity> extends Model { + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 是否删除:0否 1是 + */ + @TableField(value = "is_delete", fill = FieldFill.INSERT) + private Integer isDelete = 0; + + /** + * 创建时间 + */ + @TableField(value = "create_at", fill = FieldFill.INSERT) + private Date createAt; + + /** + * 修改时间 + */ + @TableField(value = "update_at", fill = FieldFill.INSERT_UPDATE) + private Date updateAt; +} + diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseOwnEntity.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseOwnEntity.java new file mode 100644 index 0000000..9198296 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseOwnEntity.java @@ -0,0 +1,27 @@ +package cn.axzo.framework.data.mybatisplus.model; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 10:30 + * @Description: 支持类 + */ +@Data +public abstract class BaseOwnEntity> extends BaseDataEntity { + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + protected Long createBy; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.UPDATE) + protected Long updateBy; +} diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/package-info.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/package-info.java new file mode 100644 index 0000000..e8ecbca --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/package-info.java @@ -0,0 +1 @@ +package cn.axzo.framework.data.mybatisplus; \ No newline at end of file diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/resources/META-INF/spring.factories b/axzo-common-datas/axzo-data-mybatis-plus/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..19e86e6 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +cn.axzo.framework.data.mybatisplus.config.MybatisPlusAutoConfiguration \ No newline at end of file diff --git a/axzo-common-datas/pom.xml b/axzo-common-datas/pom.xml new file mode 100644 index 0000000..79cf886 --- /dev/null +++ b/axzo-common-datas/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + + axzo-framework-commons + cn.axzo.framework + 1.0.0-SNAPSHOT + + + cn.axzo.framework.data + axzo-common-datas + pom + Axzo Common Data Parent + + + axzo-data-mybatis-plus + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index d804123..232a58c 100644 --- a/pom.xml +++ b/pom.xml @@ -33,6 +33,7 @@ axzo-common-webmvc axzo-common-autoconfigure axzo-common-jackson + axzo-common-datas @@ -129,6 +130,13 @@ ${axzo-commons.version} + + + cn.axzo.framework.data + axzo-data-mybatis-plus + ${axzo-commons.version} + + cn.axzo.framework.jackson