docs: public static EntityMapper getEntityMapper(Class<?> entityClass) {
  
          synchronized (entityClass) {
              // 先从map中获取实体映射信息
              EntityMapper entityMapper = tableMapperCache.get(entityClass);
  
              // 如果存在直接返回
              if (entityMapper != null) {
                  return entityMapper;
              }
  
              TableMapper tableMapper = getTableMapper(entityClass);
  
              //获取实体ID泛型
              Class<?> idClass = getIdClass(entityClass);
  
              // 获取实体字段列表
              List<Field> fields = getAllField(entityClass);
              // 全部列
              Set<ColumnMapper> columnMapperSet = new HashSet<ColumnMapper>();
              // 主键
              ColumnMapper idColumn = null;
              GenerationType idStrategy = null;
  
              for (Field field : fields) {
  
                  // 排除字段
                  if (field.isAnnotationPresent(Transient.class)) {
                      continue;
                  }
                  ColumnMapper columnMapper = new ColumnMapper();
  
                  // 数据库字段名
                  String columnName = null;
                  if (field.isAnnotationPresent(Column.class)) {
                      Column column = field.getAnnotation(Column.class);
                      columnName = column.name();
                      columnMapper.setInsertable(column.insertable());
                      columnMapper.setUpdatable(column.updatable());
                  }
                  // 如果为空，使用属性名并替换为下划线风格
                  if (columnName == null || columnName.equals("")) {
                      columnName = camelhumpToUnderline(field.getName());
                  }
  
                  columnMapper.setProperty(field.getName());
                  columnMapper.setColumn(columnName);
                  columnMapper.setJavaType(field.getType());
  
                  // 是否主键
                  if(field.isAnnotationPresent(Id.class)){                	
                  	columnMapper.setId(true);
                  	if(field.isAnnotationPresent(GeneratedValue.class)){ 
                  		idStrategy = field.getAnnotation(GeneratedValue.class).strategy();
                  	}
                  	idColumn = columnMapper;
                  }
                  // 添加到所有字段映射信息
                  columnMapperSet.add(columnMapper);
  
              }
              if (columnMapperSet.size() <= 0) {
                  throw new RuntimeException("实体" + entityClass.getName() + "不存在映射字段");
              }
              if (idColumn == null) {
                  throw new RuntimeException("实体" + entityClass.getName() + "不存在主键");
              }
  
              // 解析实体映射信息
              entityMapper = new EntityMapper();
              entityMapper.setTableMapper(tableMapper);
              entityMapper.setColumnsMapper(columnMapperSet);
              entityMapper.setIdClass(idClass);
              entityMapper.setIdColumn(idColumn);
              entityMapper.setIdStrategy(idStrategy);
  
              tableMapperCache.put(entityClass, entityMapper);
  
              return entityMapper;
          }
      }