在我使用数据库的过程中,我注意到我编写了查询字符串,在这个字符串中,我必须在list/array/collection的where子句中加入一些限制.应该是这样的:
select * from customer
where customer.id in (34, 26, ..., 2);
Run Code Online (Sandbox Code Playgroud)
您可以通过将此问题简化为具有字符串集合的问题并希望仅在一个字符串中创建此字符串的逗号分隔列表来简化此操作.
我到目前为止使用的方法是这样的:
String result = "";
boolean first = true;
for(String string : collectionOfStrings) {
if(first) {
result+=string;
first=false;
} else {
result+=","+string;
}
}
Run Code Online (Sandbox Code Playgroud)
但这是你可以看到非常丑陋的.您无法看到第一眼看到的情况,特别是当构造的字符串(如每个SQL查询)变得复杂时.
你(更)优雅的方式是什么?
我正在使用Ant部署我的Java应用程序.不幸的是,由于Vista,我在本地计算机上的测试部署不起作用.Program Files direaries受到保护,我不想以管理员身份启动Ant或Eclipse.所以我有想法将我的webapps文件夹移动到工作区子文件夹,所以我也可以在Ant中使用相对路径.
解决方案似乎是修改server.xml中的Host元素.使用Linux不是这样的交易:
<Host name="localhost" appBase="/path/to/webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
Run Code Online (Sandbox Code Playgroud)
但是对于Windows我没有做对.我尝试了各种可能的组合,例如:
C://Users//maerch//Workspaces//Tomcat6.0_webapps
C:/Users/maerch/Workspaces/Tomcat6.0_webapps
C:\Users\maerch\Workspaces\Tomcat6.0_webapps
C:\\Users\\maerch\\Workspaces\\Tomcat6.0_webapps
C://Users//maerch//Workspaces//Tomcat6.0_webapps\\
C:/Users/maerch/Workspaces/Tomcat6.0_webapps/
C:\Users\maerch\Workspaces\Tomcat6.0_webapps\
C:\\Users\\maerch\\Workspaces\\Tomcat6.0_webapps\\
Run Code Online (Sandbox Code Playgroud)
路径也是正确的,但它不起作用.日志文件中也没有错误消息,浏览器也不显示404消息或其他任何消息.只是一个没有标题的白页等等.有人可以帮忙吗?
Heyja,
经常使用的答案"Java有什么特别之处?" 是"工具和框架".我猜这是对的.当我看到所有工具和框架使您作为开发人员的生活变得更加容易时,我感到震惊.
我的Java技能并不完美,但平均水平很高,我仍在努力.我已经开始学习Ant了,我不想错过它.这很棒.和Hibernate一样.现在我问自己接下来应该学什么.我想为自己,特别是我的简历获得经验.不幸的是,有这么多.每个人都在谈论它,如Spring,Struts,JavaServer Faces,Maven,......
在现实世界中广泛使用的是什么?Ant或Subversion/CVS之外的哪些工具很重要?学习被接受为"真正的Java程序员"并获得有趣工作需要什么框架?;-)
每次我编写一个gui(在我的情况下使用GWT,之前从未接触过gui编程),我注意到当应用程序变得更复杂时,我的代码变得很乱.
查看我的代码并让对象构造函数中的所有这些setter头疼并且将这些混乱抛在一起真是令人沮丧.
我正在使用MVC模式,它确实有助于更清楚.不幸的是,我的整个视图组件在任何时候都不清楚.;-)我尝试使用大量接口从构建过程中抽象出来,并且只有几个实现的接口将被添加到一起,(我想我可以轻松地在不同的库之间切换,如Gwt-Ext和Gxt)但我仍然不是很开心.
我相信你也遇到了这个问题,我想问你为了获得更清晰的代码而遵循什么样的做法?除了MVC之外,gui编码是否有设计模式?您的高可读性和漂亮的用户界面代码的技巧是什么?
鉴于此代码:
String replaced = "A".replaceAll(".*", "HI");
Run Code Online (Sandbox Code Playgroud)
为什么replaced包含字符串HIHI而不是HI我猜想的?由于使用模式^.*产量HI,它似乎与行的开头有关,但我没有理由这样做.
如何使用 Hibernate 将日期从 java 对象映射到数据库?我尝试不同的方法,但我对它们不满意。为什么?让我解释一下我的问题。我有以下类 [1],包括我调用的主要方法和以下映射 [2]。当您查看控制台输出时,您可以看到有关此方法的问题。
错误的
错误的
1
-1
1224754335648
1224754335000
2008 年 10 月 23 日星期四 11:32:15 欧洲中部夏令时间
时钟@67064
正如您所看到的,截止日期并不完全相等,尽管它们应该相等,因此很难在不使用返回值的情况下比较它们getTime。我还尝试了 java.sql.Date、时间戳和日期而不是映射中的时间戳,但没有成功。
我想知道为什么最后三位数字为零,这是休眠还是java问题还是我自己的愚蠢。
感谢您的阅读。
[1]
public class Clock {
int id;
java.util.Date date;
public static void main(String[] args) {
HibernateUtil.init();
HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
Clock clock = new Clock();
clock.date = new java.util.Date();
HibernateUtil.getSessionFactory().getCurrentSession().saveOrUpdate(clock);
HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().commit();
HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
Clock fromDBClock = (Clock)HibernateUtil.getSessionFactory()
.getCurrentSession().get(Clock.class, 1);
System.out.println(clock.date.equals(fromDBClock.date));
System.out.println(fromDBClock.date.equals(clock.date));
System.out.println(clock.date.compareTo(fromDBClock.date));
System.out.println(fromDBClock.date.compareTo(clock.date));
System.out.println(clock.date.getTime());
System.out.println(fromDBClock.date.getTime());
System.out.println(clock.date.toString());
System.out.println(fromDBClock.toString());
HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().commit();
HibernateUtil.end();
}
public int getId() {
return id; …Run Code Online (Sandbox Code Playgroud)