Browse Source

1.抽取公共持久层包

1 1 month ago
parent
commit
61c5198aee

+ 50 - 0
imwork-commons/imwork-commons-dao/pom.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>top.imwork</groupId>
+        <artifactId>imwork-commons</artifactId>
+        <version>2025.11.1.0</version>
+    </parent>
+
+    <artifactId>imwork-commons-dao</artifactId>
+    <packaging>jar</packaging>
+    <description>公共组件-持久层模块</description>
+
+    <properties>
+        <maven.compiler.source>${java.version}</maven.compiler.source>
+        <maven.compiler.target>${java.version}</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-jsqlparser</artifactId>
+            <version>${mybatis-plus.version}</version> <!-- 确保版本和 MyBatis Plus 主包一致 -->
+        </dependency>
+    </dependencies>
+</project>

+ 25 - 0
imwork-commons/imwork-commons-dao/src/main/java/top/imwork/commons/dao/base/BaseDao.java

@@ -0,0 +1,25 @@
+package top.imwork.commons.dao.base;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * Copyright (C), 2015-2020
+ * FileName: BaseDao
+ * Author:   imwork
+ * Date:     2020/8/13 21:56
+ * Description:
+ * History:
+ * <author>          <time>          <version>          <desc>
+ * 作者姓名           修改时间           版本号              描述
+ */
+public interface BaseDao<T> extends BaseMapper<T> {
+    T info(Long id);
+
+    IPage<T> queryPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> wrapper);
+
+    int deleteByIds(String[] ids);
+}

+ 63 - 0
imwork-commons/imwork-commons-dao/src/main/java/top/imwork/commons/dao/config/MybatisPlusConfig.java

@@ -0,0 +1,63 @@
+package top.imwork.commons.dao.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
+import com.baomidou.mybatisplus.extension.incrementer.H2KeyGenerator;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Copyright (C), 2015-2021
+ * FileName: MybatisPlusConfig
+ * Author<作者姓名>:   stars
+ * CreateTime<创建时间>:   2021/11/26 13:19
+ * UpdateTime<修改时间>:   2021/11/26 13:19
+ * Description〈功能简述〉: MybatisPlus配置文件
+ * History<历史描述>:
+ * Since<版本号>: 1.0.0
+ */
+@Configuration
+public class MybatisPlusConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(paginationInnerInterceptor());
+        return interceptor;
+    }
+
+    /**
+     * 分页插件
+     * @return PaginationInnerInterceptor 分页拦截器
+     */
+    @Bean
+    public PaginationInnerInterceptor paginationInnerInterceptor(){
+        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
+        paginationInnerInterceptor.setDbType(DbType.MYSQL);
+        return paginationInnerInterceptor;
+    }
+
+    /**
+     * 乐观锁
+     * 通过@Version注解使用
+     * @return OptimisticLockerInnerInterceptor 乐观锁拦截器
+     */
+    @Bean
+    public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor(){
+        return new OptimisticLockerInnerInterceptor();
+    }
+
+    /**
+     * 主键生成
+     * ID_WORK 数字型id
+     * ID_WORK_STR 字符串类型id
+     * @return IKeyGenerator 主键生成策略
+     */
+    @Bean
+    public IKeyGenerator iKeyGenerator(){
+        return new H2KeyGenerator();
+    }
+}

+ 17 - 0
imwork-commons/imwork-commons-dao/src/main/resources/application.properties

@@ -0,0 +1,17 @@
+spring.datasource.type=com.zaxxer.hikari.HikariDataSource
+spring.datasource.hikari.minimum-idle=5
+spring.datasource.hikari.maximum-pool-size=15
+spring.datasource.hikari.auto-commit=true
+spring.datasource.hikari.idle-timeout=30000
+spring.datasource.hikari.pool-name=BitHalo-HikariCP-Data-Pool
+spring.datasource.hikari.max-lifetime=1800000
+spring.datasource.hikari.connection-timeout=30000
+#spring.datasource.hikari.connection-test-query: SELECT 1
+
+mybatis.mapper-locations=classpath:mapper/*.xml
+mybatis.type-aliases-package=top.imwork.*.entity
+mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
+pagehelper.helperDialect=mysql
+pagehelper.reasonable=true
+pagehelper.supportMethodsArguments=true
+pagehelper.params=count=countSql

+ 1 - 0
imwork-commons/pom.xml

@@ -16,6 +16,7 @@
     <url>https://www.imwork.top</url>
     <modules>
         <module>imwork-commons-core</module>
+        <module>imwork-commons-dao</module>
     </modules>
 
     <description>公共组件模块</description>