From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsMapper/DmsWenjianBanbenMapperXmlTest.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 103 insertions(+), 0 deletions(-)
diff --git a/jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsMapper/DmsWenjianBanbenMapperXmlTest.java b/jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsMapper/DmsWenjianBanbenMapperXmlTest.java
new file mode 100644
index 0000000..7d05a48
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsMapper/DmsWenjianBanbenMapperXmlTest.java
@@ -0,0 +1,103 @@
+package jnpf.dmsMapper;
+
+import org.apache.ibatis.builder.xml.XMLMapperBuilder;
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.ResultMapping;
+import org.apache.ibatis.session.Configuration;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class DmsWenjianBanbenMapperXmlTest {
+
+ private static final List<String> MAPPERS = Arrays.asList(
+ "DmsWenjianBanbenKongzhiMapper",
+ "DmsWenjianXinzengGuanliMapper",
+ "DmsWenjianXinzengShenheMapper",
+ "DmsWenjianXiudingShenqingMapper",
+ "DmsWenjianXiudingShenheMapper");
+
+ @Test
+ void allVersionMappersParseAndAvoidSelectStar() throws IOException {
+ for (String mapper : MAPPERS) {
+ String resource = resource(mapper);
+ String xml;
+ try (Reader reader = Resources.getResourceAsReader(resource)) {
+ xml = read(reader);
+ }
+ assertFalse(xml.toUpperCase().contains("SELECT *"), resource);
+ parse(resource);
+ }
+ }
+
+ @Test
+ void flowAndVersionFieldsHaveExplicitMappings() throws IOException {
+ Configuration newAudit = parse(resource("DmsWenjianXinzengShenheMapper"));
+ assertMapping(newAudit,
+ DmsWenjianXinzengShenheMapper.class.getName() + ".selectByFlowForUpdate",
+ "f_flow_state", "flowState");
+ assertMapping(newAudit,
+ DmsWenjianXinzengShenheMapper.class.getName() + ".selectByFlowForUpdate",
+ "shengxiao_banben_xuhao", "shengxiaoBanbenXuhao");
+
+ Configuration control = parse(resource("DmsWenjianBanbenKongzhiMapper"));
+ assertMapping(control,
+ DmsWenjianBanbenKongzhiMapper.class.getName() + ".selectByFileForUpdate",
+ "biangeng_xuhao", "biangengXuhao");
+ }
+
+ @Test
+ void controlAdvanceChecksBothExpectedSequences() throws IOException {
+ Configuration configuration = parse(resource("DmsWenjianBanbenKongzhiMapper"));
+ MappedStatement statement = configuration.getMappedStatement(
+ DmsWenjianBanbenKongzhiMapper.class.getName() + ".advance");
+ String sql = statement.getBoundSql(null).getSql().replaceAll("\\s+", " ");
+ assertTrue(sql.contains("banben_xuhao = ?"));
+ assertTrue(sql.contains("biangeng_xuhao = ?"));
+ }
+
+ private Configuration parse(String resource) throws IOException {
+ Configuration configuration = new Configuration();
+ try (InputStream input = Resources.getResourceAsStream(resource)) {
+ XMLMapperBuilder builder = new XMLMapperBuilder(
+ input, configuration, resource, configuration.getSqlFragments());
+ builder.parse();
+ }
+ return configuration;
+ }
+
+ private void assertMapping(Configuration configuration, String statementId,
+ String column, String property) {
+ MappedStatement statement = configuration.getMappedStatement(statementId);
+ boolean mapped = statement.getResultMaps().stream()
+ .flatMap(resultMap -> resultMap.getResultMappings().stream())
+ .anyMatch(mapping -> matches(mapping, column, property));
+ assertTrue(mapped, column + " must map explicitly to " + property);
+ }
+
+ private boolean matches(ResultMapping mapping, String column, String property) {
+ return column.equals(mapping.getColumn()) && property.equals(mapping.getProperty());
+ }
+
+ private String read(Reader reader) throws IOException {
+ StringBuilder result = new StringBuilder();
+ char[] buffer = new char[2048];
+ int length;
+ while ((length = reader.read(buffer)) >= 0) {
+ result.append(buffer, 0, length);
+ }
+ return result.toString();
+ }
+
+ private String resource(String mapper) {
+ return "mapper/" + mapper + ".xml";
+ }
+}
--
Gitblit v1.8.0