我正在使用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)
我怎样才能做到这一点?
我可以使用POI创建以下excel:

从图像中可以清楚地看出,每个表都有两个值即.Val One和Val Two.
但是,我希望将表名称两个单元格合并到第一列中的一个单元格中,如下所示:

如何在POI中实现这一目标?
我有一个带有下拉列表的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?
我想创建一个具有以下格式的平面文件:
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) 我有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的属性.
如何迭代结果中的列?或者我是否错误地检索结果?
是否可以通过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)
我哪里错了?
我有一个包含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程序运行它.
我收到了读者的项目清单.
Code在每个项目对象中都有一个属性,它具有我手头未知的几个可能的值.
1)根据Code每个项目的值,我想在与之相关的输出文件中写出该特定项目Code.例如,如果我当前的项目Code是"abc",则该项应写入编写器中的abc.txt.
2)如果Code当前项目中存在"xyz",且该文件不存在,则应创建一个新文件,该项目应转到该文件.
3)对于基于此创建的所有这样的多个文件Code,我还想添加页眉和页脚回调以输入一些细节,例如每个文件中的项目数.
是否有可能有一个满足3个以上要求的作家?
我知道使用multiresourceitemwriter,可以在多个输出文件之间划分数据.但据我所知,这种划分是基于物品的数量.例如,file1中的前10个项目,file2中的下10个项目,依此类推.
但是如何根据我的问题中提到的项属性将数据路由到输出文件?
我很熟悉Spring Batch,只需要一些指导,因为这是我第一次遇到这种问题.
谢谢阅读!
我创建了一个 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) 我有三个gradle项目。说ProjectA,ProjectB和ProjectC。
ProjectC依赖于ProjectA和ProjectB。虽然ProjectB依赖于ProjectA.
所以ProjectC的build.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 ×8
db2 ×2
spring-batch ×2
sql ×2
apache-poi ×1
database ×1
file ×1
gradle ×1
hibernate ×1
list ×1
pdf ×1
sql-delete ×1