From d6661d76d71214df562207169aef9c34dd81e69b Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Thu, 18 Apr 2024 08:33:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/win/bank/Application.java | 11 ++-- .../com/win/bank/config/MyBatisConfig.java | 28 -------- .../win/bank/config/MybatisPlusConfig.java | 65 +++++++++++++++++++ .../win/bank/dal/mysql/bank/BankMapper.java | 9 --- .../dataobject/bank => domain}/BankDO.java | 3 +- .../{dal/dataobject => domain}/BaseDO.java | 2 +- .../java/com/win/bank/mapper/BankMapper.java | 10 +++ .../com/win/bank/service/MainService.java | 4 +- .../win/bank/service/bank/BankService.java | 18 ++++- .../bank/service/bank/BankServiceImpl.java | 21 ------ .../win/bank/service/cmb/CmbServiceImpl.java | 2 +- src/main/resources/application-mybatis.yml | 57 ++++++++++++++++ src/main/resources/application.yml | 24 +------ src/main/resources/mapper/BankMapper.xml | 5 ++ src/main/resources/mapper/bank/BankMapper.xml | 12 ---- 15 files changed, 162 insertions(+), 109 deletions(-) delete mode 100644 src/main/java/com/win/bank/config/MyBatisConfig.java create mode 100644 src/main/java/com/win/bank/config/MybatisPlusConfig.java delete mode 100644 src/main/java/com/win/bank/dal/mysql/bank/BankMapper.java rename src/main/java/com/win/bank/{dal/dataobject/bank => domain}/BankDO.java (94%) rename src/main/java/com/win/bank/{dal/dataobject => domain}/BaseDO.java (70%) create mode 100644 src/main/java/com/win/bank/mapper/BankMapper.java delete mode 100644 src/main/java/com/win/bank/service/bank/BankServiceImpl.java create mode 100644 src/main/resources/application-mybatis.yml create mode 100644 src/main/resources/mapper/BankMapper.xml delete mode 100644 src/main/resources/mapper/bank/BankMapper.xml diff --git a/src/main/java/com/win/bank/Application.java b/src/main/java/com/win/bank/Application.java index 1a00085..5950a09 100644 --- a/src/main/java/com/win/bank/Application.java +++ b/src/main/java/com/win/bank/Application.java @@ -11,17 +11,14 @@ import org.springframework.scheduling.annotation.EnableScheduling; * * @author win */ -// @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) -@SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${win.info.base-package} -// @SpringBootApplication(scanBasePackages = {"${win.info.base-package}.server", "${win.info.base-package}.module"}, -// exclude = {DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class}) -@SpringBootApplication(scanBasePackages = {"${win.info.base-package}.server", "${win.info.base-package}.module"}) +@SpringBootApplication @EnableScheduling -@ComponentScan("com.win") -@MapperScan("com.win.bank.dal.mysql") +@MapperScan("com.win.bank.mapper") public class Application { + public static void main(String[] args) { SpringApplication.run(Application.class, args); System.out.println("闻音启动成功"); } + } diff --git a/src/main/java/com/win/bank/config/MyBatisConfig.java b/src/main/java/com/win/bank/config/MyBatisConfig.java deleted file mode 100644 index ab76912..0000000 --- a/src/main/java/com/win/bank/config/MyBatisConfig.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.win.bank.config; - -import javax.sql.DataSource; - -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.session.SqlSessionFactory; -import org.mybatis.spring.SqlSessionFactoryBean; -import org.mybatis.spring.SqlSessionTemplate; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -@MapperScan(value = "com.win.bank", annotationClass = Mapper.class) // Mapper 懒加载,目前仅用于单元测试 -public class MyBatisConfig { - - @Bean - public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { - SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); - sqlSessionFactoryBean.setDataSource(dataSource); - return sqlSessionFactoryBean.getObject(); - } - - @Bean - public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { - return new SqlSessionTemplate(sqlSessionFactory); - } -} diff --git a/src/main/java/com/win/bank/config/MybatisPlusConfig.java b/src/main/java/com/win/bank/config/MybatisPlusConfig.java new file mode 100644 index 0000000..86d5ad2 --- /dev/null +++ b/src/main/java/com/win/bank/config/MybatisPlusConfig.java @@ -0,0 +1,65 @@ +package com.win.bank.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.sql.DataSource; + +/** + * Mybatis Plus 配置 + * + * @author win + */ +@Configuration +@EnableTransactionManagement(proxyTargetClass = true) +public class MybatisPlusConfig { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + // 乐观锁插件 + interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor()); + // 分页插件 + interceptor.addInnerInterceptor(paginationInnerInterceptor()); + // 阻断插件 + interceptor.addInnerInterceptor(blockAttackInnerInterceptor()); + return interceptor; + } + + /** + * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html + */ + public PaginationInnerInterceptor paginationInnerInterceptor() { + PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); + // 设置数据库类型为mysql + paginationInnerInterceptor.setDbType(DbType.MYSQL); + // 设置最大单页限制数量,默认 500 条,-1 不受限制 + paginationInnerInterceptor.setMaxLimit(-1L); + return paginationInnerInterceptor; + } + + /** + * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html + */ + public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() { + return new OptimisticLockerInnerInterceptor(); + } + + /** + * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html + */ + public BlockAttackInnerInterceptor blockAttackInnerInterceptor() { + return new BlockAttackInnerInterceptor(); + } + +} \ No newline at end of file diff --git a/src/main/java/com/win/bank/dal/mysql/bank/BankMapper.java b/src/main/java/com/win/bank/dal/mysql/bank/BankMapper.java deleted file mode 100644 index 99cccaa..0000000 --- a/src/main/java/com/win/bank/dal/mysql/bank/BankMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.win.bank.dal.mysql.bank; - -import org.apache.ibatis.annotations.Mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.win.bank.dal.dataobject.bank.BankDO; - -@Mapper -public interface BankMapper extends BaseMapper {} diff --git a/src/main/java/com/win/bank/dal/dataobject/bank/BankDO.java b/src/main/java/com/win/bank/domain/BankDO.java similarity index 94% rename from src/main/java/com/win/bank/dal/dataobject/bank/BankDO.java rename to src/main/java/com/win/bank/domain/BankDO.java index b3b2227..cd04e61 100644 --- a/src/main/java/com/win/bank/dal/dataobject/bank/BankDO.java +++ b/src/main/java/com/win/bank/domain/BankDO.java @@ -1,10 +1,9 @@ -package com.win.bank.dal.dataobject.bank; +package com.win.bank.domain; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.win.bank.dal.dataobject.BaseDO; import lombok.*; diff --git a/src/main/java/com/win/bank/dal/dataobject/BaseDO.java b/src/main/java/com/win/bank/domain/BaseDO.java similarity index 70% rename from src/main/java/com/win/bank/dal/dataobject/BaseDO.java rename to src/main/java/com/win/bank/domain/BaseDO.java index cb2c7bb..267db24 100644 --- a/src/main/java/com/win/bank/dal/dataobject/BaseDO.java +++ b/src/main/java/com/win/bank/domain/BaseDO.java @@ -1,4 +1,4 @@ -package com.win.bank.dal.dataobject; +package com.win.bank.domain; import java.io.Serializable; diff --git a/src/main/java/com/win/bank/mapper/BankMapper.java b/src/main/java/com/win/bank/mapper/BankMapper.java new file mode 100644 index 0000000..d11a639 --- /dev/null +++ b/src/main/java/com/win/bank/mapper/BankMapper.java @@ -0,0 +1,10 @@ +package com.win.bank.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.win.bank.domain.BankDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BankMapper extends BaseMapper { + +} diff --git a/src/main/java/com/win/bank/service/MainService.java b/src/main/java/com/win/bank/service/MainService.java index 81a701d..dbb7104 100644 --- a/src/main/java/com/win/bank/service/MainService.java +++ b/src/main/java/com/win/bank/service/MainService.java @@ -4,11 +4,11 @@ import java.util.List; import javax.annotation.Resource; +import com.win.bank.service.bank.BankService; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import com.win.bank.dal.dataobject.bank.BankDO; -import com.win.bank.service.bank.BankService; +import com.win.bank.domain.BankDO; @Component public class MainService { diff --git a/src/main/java/com/win/bank/service/bank/BankService.java b/src/main/java/com/win/bank/service/bank/BankService.java index 803ff9e..aeaa5f1 100644 --- a/src/main/java/com/win/bank/service/bank/BankService.java +++ b/src/main/java/com/win/bank/service/bank/BankService.java @@ -3,8 +3,20 @@ package com.win.bank.service.bank; import java.util.List; import com.baomidou.mybatisplus.extension.service.IService; -import com.win.bank.dal.dataobject.bank.BankDO; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.win.bank.domain.BankDO; +import com.win.bank.mapper.BankMapper; + +@Service +public class BankService extends ServiceImpl implements IService { + + public List listByStatus(String status) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", status); + return baseMapper.selectList(queryWrapper); + } -public interface BankService extends IService { - List listByStatus(String status); } diff --git a/src/main/java/com/win/bank/service/bank/BankServiceImpl.java b/src/main/java/com/win/bank/service/bank/BankServiceImpl.java deleted file mode 100644 index aa1c83f..0000000 --- a/src/main/java/com/win/bank/service/bank/BankServiceImpl.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.win.bank.service.bank; - -import java.util.List; - -import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.win.bank.dal.dataobject.bank.BankDO; -import com.win.bank.dal.mysql.bank.BankMapper; - -@Service -public class BankServiceImpl extends ServiceImpl implements BankService { - - @Override - public List listByStatus(String status) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("status", status); - return list(queryWrapper); - } -} diff --git a/src/main/java/com/win/bank/service/cmb/CmbServiceImpl.java b/src/main/java/com/win/bank/service/cmb/CmbServiceImpl.java index c80222e..c6bab1d 100644 --- a/src/main/java/com/win/bank/service/cmb/CmbServiceImpl.java +++ b/src/main/java/com/win/bank/service/cmb/CmbServiceImpl.java @@ -5,7 +5,7 @@ import org.springframework.stereotype.Service; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import com.win.bank.dal.dataobject.bank.BankDO; +import com.win.bank.domain.BankDO; @Service public class CmbServiceImpl { diff --git a/src/main/resources/application-mybatis.yml b/src/main/resources/application-mybatis.yml new file mode 100644 index 0000000..c65b562 --- /dev/null +++ b/src/main/resources/application-mybatis.yml @@ -0,0 +1,57 @@ +# MyBatis Plus配置 +mybatis-plus: + # 不支持多包, 如有需要可在注解配置 或 提升扫包等级 + # 例如 com.**.**.mapper + mapperPackage: com.win.bank.mapper + # 对应的 XML 文件位置 + mapperLocations: classpath*:mapper/*Mapper.xml + # 实体扫描,多个package用逗号或者分号分隔 + typeAliasesPackage: com.win.bank.domain + # 加载全局的配置文件 +# configLocation: classpath:mybatis/mybatis-config.xml + # 启动时是否检查 MyBatis XML 文件的存在,默认不检查 + checkConfigLocation: false + configuration: + # 自动驼峰命名规则(camel case)映射 + mapUnderscoreToCamelCase: true + # MyBatis 自动映射策略 + # NONE:不启用 PARTIAL:只对非嵌套 resultMap 自动映射 FULL:对所有 resultMap 自动映射 + autoMappingBehavior: PARTIAL + # MyBatis 自动映射时未知列或未知属性处理策 + # NONE:不做处理 WARNING:打印相关警告 FAILING:抛出异常和详细信息 + autoMappingUnknownColumnBehavior: NONE + # 开启缓存 + cache-enabled: true + # 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl + # 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl + # 默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl + logImpl: org.apache.ibatis.logging.slf4j.Slf4jImpl + global-config: + # 是否打印 Logo banner + banner: false + dbConfig: + # 主键类型 + # AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID + id_type: AUTO + # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2) + # logic-delete-field: flag + # 逻辑已删除值(默认为 1) + logic-delete-value: 1 + # 逻辑未删除值(默认为 0) + logic-not-delete-value: 0 + # 逻辑已删除值 + logicDeleteValue: 2 + logicNotDeleteValue: 0 + # 字段验证策略之 insert,在 insert 的时候的字段验证策略 + # IGNORED 忽略 NOT_NULL 非NULL NOT_EMPTY 非空 DEFAULT 默认 NEVER 不加入 SQL + insert_strategy: NOT_NULL + # 字段验证策略之 update,在 update 的时候的字段验证策略 + update_strategy: NOT_NULL + # 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件 + where-strategy: NOT_NULL + +# PageHelper分页插件 +pagehelper: + helperDialect: mysql + supportMethodsArguments: true + params: count=countSql diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 80b7eda..0880a81 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,7 +2,7 @@ spring: application: name: win profiles: - include: druid + include: druid,mybatis active: dev main: allow-bean-definition-overriding: true @@ -12,28 +12,6 @@ spring: max-file-size: 200MB max-request-size: 1000MB -# MyBatis Plus 的配置项 -mybatis-plus: - configuration: - map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 - logImpl: org.apache.ibatis.logging.slf4j.Slf4jImpl - # 开启缓存 - cache-enabled: true - global-config: - db-config: - id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。 - logic-delete-value: 1 # 逻辑已删除值(默认为 1) - logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) - banner: false # 关闭控制台的 Banner 打印 - type-aliases-package: com.win.bank.dal.dataobject - mapper-locations: classpath:/mapper/bank/*.xml - # type-aliases-package: ${win.info.base-package}.module.*.dal.dataobject - encryptor: - password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成 - -mybatis-plus-join: - banner: false # 关闭控制台的 Banner 打印 - win: info: base-package: com.win diff --git a/src/main/resources/mapper/BankMapper.xml b/src/main/resources/mapper/BankMapper.xml new file mode 100644 index 0000000..95ae15a --- /dev/null +++ b/src/main/resources/mapper/BankMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/bank/BankMapper.xml b/src/main/resources/mapper/bank/BankMapper.xml deleted file mode 100644 index 11861aa..0000000 --- a/src/main/resources/mapper/bank/BankMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file