publicvoidrelationalExpression()throws JSQLParserException { PlainSelectplainSelect= ((Select) CCJSqlParserUtil.parse("select * from t_user")).getPlainSelect();
//in语法 name in ('name1','name2') , // 注意4.4版本使用ExpressionList,默认会带上括号 4.9版本ExpressionList已经不带括号了,继续使用SQL语法会没有括号导致错误,使用时需要用ParenthesedExpressionList InExpressioninExpression=newInExpression( newColumn("name"), newParenthesedExpressionList<>(Arrays.asList(newStringValue("name1"), newStringValue("name2"))) );
// like语法 name like '%name1%' LikeExpressionlikeExpression=newLikeExpression(); likeExpression.setLeftExpression(newColumn("name")); likeExpression.setLeftExpression(newStringValue("%name1%"));
//between...and...语法 age between 18 and 35 Betweenbetween=newBetween(); between.setLeftExpression(newColumn("age")); between.setBetweenExpressionStart(newLongValue("18")); between.setBetweenExpressionEnd(newLongValue("35"));
// !=或<> 语法 name != '小明' NotEqualsTonotEqualsTo=newNotEqualsTo(newColumn("name"), newStringValue("小明"));
//>=或<= 语法 >或<同理 age>=18 SELECT * FROM t_user WHERE age <= 18 GreaterThanEqualsgreaterThanEquals=newGreaterThanEquals(); greaterThanEquals.setLeftExpression(newColumn("age")); greaterThanEquals.setRightExpression(newLongValue(18)); MinorThanEqualsminorThanEquals=newMinorThanEquals(); greaterThanEquals.setLeftExpression(newColumn("age")); greaterThanEquals.setRightExpression(newLongValue(18));
//is null / is not null 语法 name is not null IsNullExpressionisNullExpression=newIsNullExpression(); isNullExpression.setLeftExpression(newColumn("name")); isNullExpression.setNot(true); //设置 is not null //isNullExpression.setUseIsNull(true); //使用 is null或is not null ,否则使用 ISNULL 或NOT ISNULL //isNullExpression.setUseNotNull(false); 设置为true语法不带is
//match against 语法 全文检索 where (name,id) AGAINST ('苹果') FullTextSearchfullTextSearch=newFullTextSearch(); fullTextSearch.setMatchColumns(newExpressionList(newColumn("name"),newColumn("id"))); fullTextSearch.setAgainstValue(newStringValue("苹果"));
//构造一个 SELECT * FROM t_user WHERE id IN (SELECT id FROM t_role WHERE age = 18) PlainSelectplainSelect= SelectUtils.buildSelectFromTable(newTable("t_user")).getPlainSelect(); plainSelect.setWhere( newInExpression( newColumn("id"), //构造IN的右边,带括号的查询 newParenthesedSelect().withSelect( //构造内部查询 newPlainSelect() .withFromItem(newTable("t_role")) //from .withSelectItems(Arrays.asList(newSelectItem<>(newColumn("id")))) //select 返回列 .withWhere(newEqualsTo(newColumn("age"),newLongValue(18))) //where条件 ) ) ); System.out.println(plainSelect); }