我是靠谱客的博主 眼睛大冰淇淋,最近开发中收集的这篇文章主要介绍Java数据库语句拼凑,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

两个类分别是Sql和Where,支持hql语句和支持sql语句拼凑,当你传入的参数为空时,拼凑的这个条件就会自动的换成“1=1”,使用方法:Sql sql = Sql.start("select * from tbl_name").add(Where.newIntance().like("property", value), "where")(这里拼接很灵活大家可以看代码)获取sql语句直接可以sql.toString(),如果获取所有参数可以通过sql.getParams()。

Sql.java

package com.fbtt.axst.utils;
import java.util.ArrayList;
import java.util.List;
public class Sql {
private Sql(String hql) {
this.hql = hql;
}
public static Sql start(String hql){
return new Sql(hql);
}
//所有的参数
private List params = new ArrayList();
//最终的hql语句
private String hql = null;
/**
* 向当前hql语句追加语句
* Example:
* hql = Hql.start("from Employee a ");
* hql.add("order by a.name")
* String str = hql.toString();
* 此处str为:from Employee a order by a.name;
*/
public Sql add(String str){
hql = hql + " " + str;
return this;
}
/**
* 向当前hql语句追加语句,其它的参数
* Example:
* hql = Hql.start("from Employee a ");
* hql.add("where a.name like ?", new Serializable[]{"张三"});
* String str = hql.toString();
* str为:from Employee a where a.name like ?
* Serializable[] params = hql.getParams();
* params为:["张三"]
* @param hql
* @param params
*/
@SuppressWarnings("unchecked")
public Sql add(String str, Object[] params){
this.add(str);
if(params != null){
for(Object obj : params){
this.params.add(obj);
}
}
return this;
}
public Sql add(String str, Object param){
this.add(str, new Object[]{param});
return this;
}
//获取所有参数
public Object[] getParams(){
return params.toArray();
}
/**
* 添加where条件
* Example:
* WhereHql wh = WhereHql.newInstance();
* wh.eq("a.name", "张三");
* Hql hql = Hql.start("from Employee a ");
* hql.add(wh, "where");
* hql.toString();
* 此时得到:from Employee a where a.name = '张三'
* @param wh
* @param prefix 当wh.toString不为空时在其前添加的前缀
* @return
*/
public Sql add(Where wh, String prefix){
String wstr = wh.toString();
if(prefix == null)prefix = "";
if(wstr != null){
this.add(prefix + " " + wstr, wh.getParams());
}
return this;
}
/**
* 获取生成的hql语句
*/
@Override
public String toString() {
return hql;
}
}
Where.java

package com.fbtt.axst.utils;
import java.util.ArrayList;
import java.util.List;
public class Where {
private Where(){
}
public static Where newInstance(){
return new Where();
}
//所有的参数
private List params = new ArrayList();
//最终的hql语句
private String hql = null;
/**
* 向当前hql语句追加语句,及它的参数
* @param params
*/
@SuppressWarnings("unused")
private Where addNotNull(String str, Object param, String prefix){
if(param == null || param.equals(""))return this;
this.add(str, param, prefix);
return this;
}
private Where addAndNotNull(String str, Object param){
if(param == null || param.equals(""))return this;
this.add(str, param, "and");
return this;
}
@SuppressWarnings("unchecked")
public Where add(String str, Object param, String prefix){
if(prefix == null)prefix = "and";
if(hql == null)
hql = str;
else
hql = hql + " " + prefix + " " + str;
if(param != null){
this.params.add(param);
}
return this;
}
@Override
public String toString() {
return hql;
}
//获取所有参数
public Object[] getParams(){
return this.params.toArray();
}
//=
public Where eq(String prop, Object param){
if(param == null || param.equals(""))return this;
this.addAndNotNull(prop + "=?", param);
return this;
}
//<
public Where lt(String prop, Object param){
if(param == null || param.equals(""))return this;
this.addAndNotNull(prop + " < ?", param);
return this;
}
//<=
public Where le(String prop, Object param){
if(param == null || param.equals(""))return this;
this.addAndNotNull(prop + " <= ?", param);
return this;
}
//like
public Where like(String prop, Object param){
if(param == null || param.equals(""))return this;
this.addAndNotNull(prop + " like ?", "%" + param + "%");
return this;
}
//>
public Where gt(String prop, Object param){
if(param == null || param.equals(""))return this;
this.addAndNotNull(prop + " > ?", param);
return this;
}
//>=
public Where ge(String prop, Object param){
if(param == null || param.equals(""))return this;
this.addAndNotNull(prop + " >= ?", param);
return this;
}
}

转载于:https://my.oschina.net/huangsm/blog/29121

最后

以上就是眼睛大冰淇淋为你收集整理的Java数据库语句拼凑的全部内容,希望文章能够帮你解决Java数据库语句拼凑所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部