public static String getClassName(Class clazz){ return clazz.getName(); } /** * 获取Entity注解中的表名 */ public static String getTableName(Class clazz){ if (clazz.isAnnotationPresent(Entity.class)){ Entity entity = (Entity) clazz.getAnnotation(Entity.class); return entity.name(); } else { System.out.println("缺少Entity注解"); return null; } } /** * 获取主键属性和对应的字段 */ public static Map<String, String> getIdMapper(Class clazz){ boolean flag=true; Map<String, String> map = new HashMap<>(); Field[] fields = clazz.getDeclaredFields(); for (Field field:fields){ if (field.isAnnotationPresent(Id.class)){ flag=false; String fieldName = field.getName(); if (field.isAnnotationPresent(Column.class)){ Column column = field.getAnnotation(Column.class); String columnName = column.name(); map.put(fieldName,columnName); break; } else { System.out.println("缺少Column注解"); } } } if (flag){ System.out.println("缺少Id注解"); } return map; }
时间: 2024-02-10 14:19:15 浏览: 74
这段代码是用来获取实体类对应的表名和主键属性以及对应的字段名的。其中,getClassName方法用来获取类的全限定名,getTableName方法用来获取实体类对应的表名,getIdMapper方法用来获取主键属性和对应的字段名。这些方法都是静态方法,可以直接通过类名调用。该代码使用了Java反射机制,通过获取类的注解和属性上的注解来获取需要的信息。如果类或属性上缺少必要的注解,则会输出相应的错误信息。
相关问题
public int add(Connection con,SchoolClass schoolClass)throws Exception{ String sql="insert into t_school_class values(null,?,?)"; PreparedStatement pstmt=con.prepareStatement(sql); pstmt.setString(1, schoolClass.getClassName()); System.out.println(schoolClass.getClassName()); pstmt.setString(2, schoolClass.getCalssDesc()); return pstmt.executeUpdate(); } /** * 查询班级集合 * @param con * @param schoolClass * @return * @throws Exception */ public ResultSet list(Connection con,SchoolClass schoolClass)throws Exception{ StringBuffer sb=new StringBuffer("select * from t_school_class"); if(StringUtil.isNotEmpty(schoolClass.getClassName())){ sb.append(" and className like '%"+schoolClass.getClassName()+"%'"); } PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where")); return pstmt.executeQuery(); } /** * 删除班级 * @param con * @param id * @return * @throws Exception */ public int delete(Connection con,String id)throws Exception{ String sql="delete from t_school_class where id=?"; PreparedStatement pstmt=con.prepareStatement(sql); pstmt.setString(1, id); return pstmt.executeUpdate(); } /** * 更新班级 * @param con * @param schoolClass * @return * @throws Exception */ public int update(Connection con,SchoolClass schoolClass)throws Exception{ String sql="update t_school_class set className=?,classDesc=? where id=?"; PreparedStatement pstmt=con.prepareStatement(sql); pstmt.setString(1, schoolClass.getClassName()); pstmt.setString(2, schoolClass.getCalssDesc()); pstmt.setInt(3, schoolClass.getId()); return pstmt.executeUpdate(); } }
这段代码看起来像是一个 Java 类中的一些数据库操作方法,这些方法分别是添加班级、查询班级集合、删除班级和更新班级信息。这些方法都需要一个数据库连接对象 Connection 和一个 SchoolClass 类型的参数。其中,添加班级方法使用了 PreparedStatement 预编译 SQL 语句,查询班级集合方法使用了 StringBuffer 拼接 SQL 语句,并使用了 StringUtil 工具类的方法判断字符串是否为空,删除班级方法使用了 PreparedStatement 预编译 SQL 语句并传入一个 ID 参数,更新班级信息方法同样使用了 PreparedStatement 预编译 SQL 语句,并传入一个 SchoolClass 对象的参数。
public class SchoolClass { private int id; // 编号 private String className; // 班级名称 private String calssDesc; // 备注 public SchoolClass() { super(); // TODO Auto-generated constructor stub } public SchoolClass(String className, String calssDesc) { super(); this.className = className; this.calssDesc = calssDesc; } public SchoolClass(int id, String className, String calssDesc) { super(); this.id = id; this.className = className; this.calssDesc = calssDesc; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getCalssDesc() { return calssDesc; } public void setCalssDesc(String calssDesc) { this.calssDesc = calssDesc; } @Override public String toString() { return className; } }
这是一个Java类,名为SchoolClass,它有三个属性:id、className和calssDesc,分别表示班级的编号、名称和备注。它有三个构造函数,分别是无参构造函数、带有两个参数的构造函数,以及带有三个参数的构造函数。它还有一些getter和setter方法,用于获取和设置属性值。最后,它还重写了toString()方法,返回班级名称。
阅读全文