在上一篇里,我们已经取到了我们在生成sql语句中所需要的信息,这一篇里我们开始根据class来生成我们需要的sql。在这之前我们先确认几件事情
我们主要解决的是增删该查的问题,所以我们先写如何生成一个新增的sql。
我么先观察一下sql一般来说都有什么构成。现在先放一个例子出来:
通过观察上面的sql,可以发现其中有一些共性:
接下来,就可以按照每种类型的sql来创建sql了。
一下所有的对象都是这个User.java
import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.Table; import java.util.Date; @Table(name = "user") public class User { @Column(name = "name") private String name; @Id @Column(name = "id") private int id; @Column(name = "age") private int age; @Column(name = "mark") private String mark; @Column(name = "create_date") private Date createDate; @Column(name = "status") private int status; // getter setter toString }
主要用来操作字符串
import java.util.Collection; import java.util.Iterator; /** * @author hjx */ public class StringUtils { public static final String SPACE = " "; public static final String BLANK = ""; public static final String COMMA = ", "; /** * 重复字符串 * * @param str * @param number * @return */ public static String[] repeat(String str, int number) { Assert.notNull(str); String[] strings = new String[number]; for (int i = 0; i < number; i++) { strings[i] = str; } return strings; } /** * 组合字符串 * * @param strings * @return */ public static String append(final Object... strings) { StringBuilder builder = new StringBuilder(); for (Object s1 : strings) { if (s1 == null) { continue; } builder.append(s1.toString()); } return builder.toString(); } /** * 组合字符串 * * @param collection * @param separator * @return */ public static String join(Collection collection, String separator) { StringBuffer var2 = new StringBuffer(); for (Iterator var3 = collection.iterator(); var3.hasNext(); var2.append((String) var3.next())) { if (var2.length() != 0) { var2.append(separator); } } return var2.toString(); } }
用来从对象中取值的,使用反射。
/** * 取值 * * @param target 要从哪一个对象中取值 * @param field 要取这个对象的那个属性的值 * @return */ public static Object getValue(Object target, Field field) { //忽略掉private field.setAccessible(true); try { return field.get(target); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; }
用来给对象设置值的,还是反射。
/** * 设置值 * * @param target 要从哪一个对象中取值 * @param field 要取这个对象的那个属性的值 * @param value 要设置的值 * @return */ public static boolean setValue(Object target, Field field, Object value) { field.setAccessible(true); try { field.set(target, value); return true; } catch (IllegalAccessException e) { e.printStackTrace(); } return false; }
下面就可以开始创建各种sql了~~~
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句