java dsl_我使用DSL编写SQL的一个Java实现

1.导读

什么是DSL?领域特定语言(Domain Specific language)通常被定义为一种特别针对某类特殊问题的计算机语言,它不打算解决其领域外的问题。了解更多

2.你使用JDBC来

存取

数据时,怎么处理你的SQL

2.1 对于一个固定条件的查询,我们会使用PreparedStatement来实现。就像下面这个例子,只需要DateOfBirth一个固定条件来查询。

PreparedStatement statement=null;try{

Connection connection=getConnection();

statement=connection.prepareStatement("SELECT Name"+"FROM Students"+"WHERE DateOfBirth 

statement.setDate(1,newjava.sql.Date(newjava.util.Date().getTime()));

ResultSet rs=statement.executeQuery();while(rs.next()) {

System.out.print(rs.getString(1));

}

}catch(SQLException e) {

e.printStackTrace();

}

2.2 你遇到过这样的问题么?

你使用JDBC来实现数据存取,如果你要实现一个复杂条件的查询,而且条件数目还不一定,这时候就很难使用PreparedStatement来

解决了,因为你的SQL模板不是固定的。就像上面的这个例子,如果用户可能要使用DateOfBirth或者Name作为条件查询,或者还有更多的条件。

2.3 这个问题可以怎么解决呢?

你当然可以使用简单的字符串拼接,根据不同的条件拼接成不同的SQL。就像以下代码

intid=0;

String name="Heis";

String gender="male";

String sql="select Name from Students where id="+id;if(name!=null) {

sql+="and name='"+name+"'";

}if(gender!=null) {

sql+="and gender='"+gender+"'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值