小编Vic*_*cky的帖子

如何在SQL中使用NOT EXISTS和COMPOSITE KEYS从POJO插入数据

我正在使用DB2 DBMS.

场景1:

myTable有一个复合键(key1,key2),其中key1和key2都是来自yourTable的外键.

我想将yourTable中的新数据插入到myTable中,但前提是myTable中还没有key1,key2组合.

insert into myTable(key1, key2, someData)
values(x, y, z)
where NOT EXISTS (want to check if composite key is not already present)
Run Code Online (Sandbox Code Playgroud)

场景2:

我使用属性data1,data2和data将数据放入yourTable的java对象中.

我想在Scenario1中插入带有检查的上述数据.dataT + data2不应该已经出现在myTable中.

我该如何实现这一目标?我认为我们不能在insert语句中使用SELECT语句.

insert into myTable(key1, key2, data)
values(data1, data2, data)
where (data1 + data2 are already not present in myTable)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

java sql database db2 composite-key

9
推荐指数
1
解决办法
8068
查看次数

在POI中合并excel输出中的单元格

我可以使用POI创建以下excel:

在此输入图像描述

从图像中可以清楚地看出,每个表都有两个值即.Val One和Val Two.

但是,我希望将表名称两个单元格合并到第一列中的一个单元格中,如下所示:

在此输入图像描述

如何在POI中实现这一目标?

java apache-poi

9
推荐指数
1
解决办法
3万
查看次数

结合两份Jasper报告

我有一个带有下拉列表的Web应用程序,用户可以从中选择报告类型.report1,report2,report3等

根据所选报告,在服务器上编译Jasper报告,并以PDF格式弹出.

在服务器端,我使用下面的代码以单独的方法实现每个报告,例如对于report1:

JRBeanCollectionDataSource report1DataSource = new JRBeanCollectionDataSource(resultSetBeanListReport1);

InputStream inputStreamReport1 = new FileInputStream(request.getSession().getServletContext ().getRealPath(jrxmlFilePath + "report1.jrxml"));

JasperDesign jasperDesignReport1 = JRXmlLoader.load(inputStreamReport1);

JasperReport jasperReportReport1 = JasperCompileManager.compileReport(jasperDesignReport1);

bytes = JasperRunManager.runReportToPdf(jasperReportReport1, titleMapReport1,   report1DataSource);
Run Code Online (Sandbox Code Playgroud)

同样,report2使用以下代码的单独方法:

JRBeanCollectionDataSource invstSummDataSource = new JRBeanCollectionDataSource(resultSetBeanListInvstOfSumm);

InputStream inputStreamInvstSumm = new FileInputStream(request.getSession().getServletContext().getRealPath(jrxmlFilePath + "investSummary.jrxml"));

JasperDesign jasperDesignInvstSumm = JRXmlLoader.load(inputStreamInvstSumm);

JasperReport jasperReportInvstSumm = JasperCompileManager.compileReport(jasperDesignInvstSumm);

bytes = JasperRunManager.runReportToPdf(jasperReportInvstSumm, titleMapInvstSumm, invstSummDataSource);
Run Code Online (Sandbox Code Playgroud)

现在我要求如果从下拉列表中选择report1,则生成的PDF应该在同一PDF中一个接一个地包含所有报告.

如何组合上面两行代码以最终生成单个PDF?

java pdf jasper-reports

9
推荐指数
2
解决办法
2万
查看次数

Spring批处理:将列名称作为平面文件中的第一行

我想创建一个具有以下格式的平面文件:

Col1Name;Col2Name;Col3Name
one;23;20120912
two;28;20120712
Run Code Online (Sandbox Code Playgroud)

如图所示,平面文件中的第一行是列名.

如何通过头回调实现这一目标?

我看到如果输入文件的格式是以上格式,则有一个选项可以忽略第一行:

<property name="firstLineIsHeader" value="true"/>
Run Code Online (Sandbox Code Playgroud)

此外,这个Jira问题表明我想要的是实施和关闭.但是,我无法找到将第一行写为列名的任何示例.

<beans:bean id="MyFileItemWriter" class="com.nik.MyFileItemWriter" scope="step">
    <beans:property name="delegate">
        <beans:bean class="org.springframework.batch.item.file.FlatFileItemWriter">
            <beans:property name="resource" value="file:MYFILE.dat" /> 

            <beans:property name="lineAggregator">
                <beans:bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
                    <beans:property name="delimiter" value=";" />
                    <beans:property name="fieldExtractor">
                        <beans:bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
                            <beans:property name="names" value="Col1Name, Col2Name, Col3Name" />
                        </beans:bean>
                    </beans:property>
                </beans:bean>
            </beans:property>
            <beans:property name="headerCallback" ref="MyFileItemWriter" />
        </beans:bean>
    </beans:property>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)

我的项目编写者如下所示:

public class MyFileItemWriter implements ItemWriter<MyBean>, FlatFileHeaderCallback, ItemStream{

private FlatFileItemWriter<MyBean> delegate;    

 public void setDelegate(final FlatFileItemWriter<MyBean> delegate) {
        this.delegate = delegate;
    }

public void writeHeader(Writer writer) throws …
Run Code Online (Sandbox Code Playgroud)

java spring-batch spring-batch-admin

8
推荐指数
2
解决办法
2万
查看次数

迭代hibernate查询返回的列表对象中的结果

我有hibernate查询如下:

String mySql = "SELECT S.col1, S.col2, T.col3, T.col4, T.col5 
                FROM myTable S, myTable1 T 
                WHERE S.id = :id and S.id = T.id";
Query myQuery = this.em.createQuery(mySql);
myQuery.setParameter("id", "123");
List<Object> result = myQuery.getResultList();
Run Code Online (Sandbox Code Playgroud)

表myTable和myTable1是实体类.

myTO是一个简单的java类,其属性为col1,col2,col3,col4,col5.

上述查询的结果应该映射到myTO的属性.

如何迭代结果中的列?或者我是否错误地检索结果?

java hibernate list

7
推荐指数
1
解决办法
5万
查看次数

使用RandomAccessFile到达文件中的特定行

是否可以通过RandomAccessFile将光标定位到文件中特定行的开头?

例如,我想在文件中第111行的char 10到20之间更改String.该文件具有固定长度的记录.

是否可以使用RandomAccessFile将光标直接定位到第111行的开头?

更新:

我使用了以下代码.但是,它返回null.

行长度为200个字符(如果我没有错,则为200个字节)

File f = new File(myFile); 
RandomAccessFile r = new RandomAccessFile(f,"rw"); 
r.skipBytes(200 * 99);   // linesize * (lineNum - 1) 
System.out.println(r.readLine());
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

java file random-access

7
推荐指数
1
解决办法
1万
查看次数

在单个查询中从DB2中的表中删除重复的行

我有一个包含3列的表格如下:

one   |   two    |  three  |   name
------------------------------------
 A1       B1          C1        xyz
 A1       B1          C1        pqr      -> should be deleted
 A1       B1          C1        lmn      -> should be deleted
 A2       B2          C2        abc
 A2       B2          C2        def      -> should be deleted
 A3       B3          C3        ghi
------------------------------------ 
Run Code Online (Sandbox Code Playgroud)

该表没有任何主键列.我对表没有任何控制权,因此我无法添加任何主键列.

如图所示,我想删除一列,两列和三列组合相同的行.因此,如果A1B1C1发生三次(如上所述),则应删除其他两个,只留下一个.

如何通过DB2中的一个查询实现这一目标?

我的要求是单个查询,因为我将通过java程序运行它.

sql db2 sql-delete

7
推荐指数
1
解决办法
6万
查看次数

根据项目的属性作为条件,将数据路由到项目编写器中的多个文件

我收到了读者的项目清单.

Code在每个项目对象中都有一个属性,它具有我手头未知的几个可能的值.

1)根据Code每个项目的值,我想在与之相关的输出文件中写出该特定项目Code.例如,如果我当前的项目Code是"abc",则该项应写入编写器中的abc.txt.

2)如果Code当前项目中存在"xyz",且该文件不存在,则应创建一个新文件,该项目应转到该文件.

3)对于基于此创建的所有这样的多个文件Code,我还想添加页眉和页脚回调以输入一些细节,例如每个文件中的项目数.

是否有可能有一个满足3个以上要求的作家?

我知道使用multiresourceitemwriter,可以在多个输出文件之间划分数据.但据我所知,这种划分是基于物品的数量.例如,file1中的前10个项目,file2中的下10个项目,依此类推.

但是如何根据我的问题中提到的项属性将数据路由到输出文件?

我很熟悉Spring Batch,只需要一些指导,因为这是我第一次遇到这种问题.

谢谢阅读!

spring-batch

7
推荐指数
2
解决办法
1万
查看次数

如何将 KStream 打印到控制台?

我创建了一个 Kafka 主题并向其推送了一条消息。

所以

bin/kafka-console-consumer --bootstrap-server abc.xyz.com:9092 --topic myTopic --from-beginning --property print.key=true --property key.separator="-"
Run Code Online (Sandbox Code Playgroud)

印刷

key1-customer1
Run Code Online (Sandbox Code Playgroud)

在命令行上。

我想根据这个主题创建一个 Kafka Stream 并想key1-customer1在控制台上打印它。

我为它写了以下内容:

final Properties streamsConfiguration = new Properties();

streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "app-id");
streamsConfiguration.put(StreamsConfig.CLIENT_ID_CONFIG, "client-id");
streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "abc.xyz.com:9092");

streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName());
streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName());

// Records should be flushed every 10 seconds. This is less than the default
// in order to keep this example interactive.
streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 10 * 1000);
// For illustrative purposes we disable record caches
streamsConfiguration.put(StreamsConfig.CACHE_MAX_BYTES_BUFFERING_CONFIG, 0);

final StreamsBuilder builder = …
Run Code Online (Sandbox Code Playgroud)

java apache-kafka-streams

7
推荐指数
1
解决办法
4209
查看次数

Gradle 多项目传递依赖

我有三个gradle项目。说ProjectAProjectBProjectC

ProjectC依赖于ProjectAProjectB。虽然ProjectB依赖于ProjectA.

所以ProjectCbuild.gradle有下面几行:

dependencies {
  implementation project(':ProjectA')
  implementation project(':ProjectB')
}
Run Code Online (Sandbox Code Playgroud)

并且ProjectB'sbuild.gradle具有以下内容:

dependencies {
  implementation project(':ProjectA')
}
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么我需要显式implementation声明ProjectAinProjectC的构建文件?

因为,我添加ProjectB, 不ProjectA应该被自动包含,因为ProjectB它依赖于ProjectA?

换句话说,为什么以下不适用于ProjectC

dependencies {
  implementation project(':ProjectB')
}
Run Code Online (Sandbox Code Playgroud)

我是新手gradle,因此试图了解 Project 工作之间的依赖关系管理。


编辑:

所以我想把ProjectBbuild.gradle 改成下面的:

dependencies {
  api project(':ProjectA') …
Run Code Online (Sandbox Code Playgroud)

java gradle gradle-dependencies

7
推荐指数
2
解决办法
2392
查看次数