自定义search注解,以及相应的default接口,进一步提高bean的内聚性和代码的重用性
2017-05-28 21:01
330 查看
package util.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//自定义search注解,标示参与模糊查询的属性,以及参与的方式是等于还是like
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Searcher {
public static final boolean LIKE = true;
public static final boolean BE = false;
boolean likeorbe();
}
package util.annotation;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import util.BeanSQLBuffer;
import util.SQLUtil;
public interface BeanSearch {
public static <E extends BeanSQLBuffer> ArrayList<E> search(String message, E e, Integer cansee) {
Class<? extends BeanSQLBuffer> clazz = e.getClass();
Field[] df = clazz.getDeclaredFields();
StringBuffer sql = new StringBuffer("select *from `" + e.getTable() + "`where (");
StringBuffer term = new StringBuffer();
if (message == null || message.equals(""))
message = "%";
/* 构建模糊查询的sql语句 */
List<String> list = new ArrayList<>();
for (Field f : df) {
if (f.isAnnotationPresent(Searcher.class)) {
if (f.getAnnotation(Searcher.class).likeorbe()) {
term.append("or `" + f.getName() + "` like ? ");
list.add("%" + message + "%");
} else {
term.append("or `" + f.getName() + "` = ?");
list.add(message);
}
}
}
if (term.length() > 0)
sql.append(term.substring(2)+"or");
sql.append(" 1=2 )");
if (cansee != null)
sql.append("and `cansee`=" + cansee);
System.out.println(sql);
System.out.println(list);
//再根据sql语句查询和制作对象,就很随意了
ResultSet rs = SQLUtil.query(sql.toString(), list.toArray());
return SQLUtil.getBeans(e, rs);
}
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//自定义search注解,标示参与模糊查询的属性,以及参与的方式是等于还是like
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Searcher {
public static final boolean LIKE = true;
public static final boolean BE = false;
boolean likeorbe();
}
package util.annotation;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import util.BeanSQLBuffer;
import util.SQLUtil;
public interface BeanSearch {
public static <E extends BeanSQLBuffer> ArrayList<E> search(String message, E e, Integer cansee) {
Class<? extends BeanSQLBuffer> clazz = e.getClass();
Field[] df = clazz.getDeclaredFields();
StringBuffer sql = new StringBuffer("select *from `" + e.getTable() + "`where (");
StringBuffer term = new StringBuffer();
if (message == null || message.equals(""))
message = "%";
/* 构建模糊查询的sql语句 */
List<String> list = new ArrayList<>();
for (Field f : df) {
if (f.isAnnotationPresent(Searcher.class)) {
if (f.getAnnotation(Searcher.class).likeorbe()) {
term.append("or `" + f.getName() + "` like ? ");
list.add("%" + message + "%");
} else {
term.append("or `" + f.getName() + "` = ?");
list.add(message);
}
}
}
if (term.length() > 0)
sql.append(term.substring(2)+"or");
sql.append(" 1=2 )");
if (cansee != null)
sql.append("and `cansee`=" + cansee);
System.out.println(sql);
System.out.println(list);
//再根据sql语句查询和制作对象,就很随意了
ResultSet rs = SQLUtil.query(sql.toString(), list.toArray());
return SQLUtil.getBeans(e, rs);
}
}
相关文章推荐
- Spring MVC代码实例系列-06:Spring MVC配置Hibernate-Validator以及自定义校验注解
- 提高Java代码重用性的措施三:选择最简单的参数接口类型
- 提高Java代码重用性的措施三:选择最简单的参数接口类型
- ssm 自定义注解实现mybatis自动维护表结构以及利用freemarker生成代码
- IOS自定义View实现相应的控件点击方法以及代理的总结(附代码)
- Spring 关于bean的获取以及自定义注解的起始注入和获取
- 提高Java代码可重用性的三个措施 【转】
- JAVA进阶:提高代码可重用性的三个措施
- 提高Java代码可重用性的三个措施
- 几个提高代码重用性的函数
- WAS应用系列:WAS6 自定义用户注册接口代码 + 企业应用安全角色配置 + WAS安全配置 实现统一灵活的集成授权
- 提高Java代码重用性方法 措施二:把参数类型改成接口
- ABAP--通过自定义类使用ALV(相应事件)的代码
- ABAP--通过自定义类使用ALV(相应事件)的代码
- 提高Java代码可重用性的三个措施
- 提高java代码可重用性的三个有利措施
- 提高Java代码重用性的方法----之一改写类的实例方法
- ABAP--通过自定义类使用ALV(相应事件)的代码
- 提高Java代码可重用性的三个措施
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)