FormatSqlMySQL.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package jnpf.database.sql.param;
  2. import jnpf.constant.MsgCode;
  3. import jnpf.database.datatype.db.DtMySQLEnum;
  4. import jnpf.database.model.dbfield.DbFieldModel;
  5. import jnpf.database.model.dbfield.JdbcColumnModel;
  6. import jnpf.exception.DataTypeException;
  7. /**
  8. * 类功能
  9. *
  10. * @author JNPF开发平台组 YanYu
  11. * @version v3.4.5
  12. * @copyrignt 引迈信息技术有限公司
  13. * @date 2022-12-06
  14. */
  15. public class FormatSqlMySQL {
  16. /**
  17. * 处理单引号 ''
  18. */
  19. public static String singleQuotes(String value){
  20. return value.replace("'", "\\'");
  21. }
  22. /**
  23. * Mysql一些类型的特殊处理
  24. */
  25. public static Object getMysqlValue(JdbcColumnModel dbColumnModel) {
  26. return dbColumnModel.getValue();
  27. }
  28. public static void checkMysqlFieldPrimary(DbFieldModel field, String table) throws DataTypeException {
  29. // Mysql对主键的一些限制
  30. if(field.getIsPrimaryKey()){
  31. // Mysql 字段为主键的时候,不能为BLOB/TEXT/tinytext的类型
  32. switch ((DtMySQLEnum)field.getDtModelDTO().getConvertTargetDtEnum()){
  33. case BLOB:
  34. case TINY_TEXT:
  35. case MEDIUM_TEXT:
  36. case TEXT:
  37. case LONG_TEXT:
  38. throw new DataTypeException(MsgCode.DB014.get(table, field.getField(), field.getDtModelDTO().getDtEnum().getDataType()));
  39. case VARCHAR:
  40. // varchar作为主键的时候,长度不允许超过768
  41. if(field.getDtModelDTO().getCharLength() > 768L){
  42. field.getDtModelDTO().setCharLength(768L);
  43. }
  44. break;
  45. default:
  46. }
  47. }
  48. }
  49. }