GenTableColumnMapper.xml 5.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.ruoyi.generator.mapper.GenTableColumnMapper">
  6. <resultMap type="com.ruoyi.generator.domain.GenTableColumn" id="GenTableColumnResult">
  7. </resultMap>
  8. <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult">
  9. <if test="@com.ruoyi.common.mybatis.helper.DataBaseHelper@isMySql()">
  10. select column_name,
  11. (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required,
  12. (case when column_key = 'PRI' then '1' else '0' end) as is_pk,
  13. ordinal_position as sort,
  14. column_comment,
  15. (case when extra = 'auto_increment' then '1' else '0' end) as is_increment,
  16. column_type
  17. from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName})
  18. order by ordinal_position
  19. </if>
  20. <if test="@com.ruoyi.common.mybatis.helper.DataBaseHelper@isOracle()">
  21. select lower(temp.column_name) as column_name,
  22. (case when (temp.nullable = 'N' and temp.constraint_type != 'P') then '1' else null end) as is_required,
  23. (case when temp.constraint_type = 'P' then '1' else '0' end) as is_pk,
  24. temp.column_id as sort,
  25. temp.comments as column_comment,
  26. (case when temp.constraint_type = 'P' then '1' else '0' end) as is_increment,
  27. lower(temp.data_type) as column_type
  28. from (
  29. select col.column_id, col.column_name,col.nullable, col.data_type, colc.comments, uc.constraint_type, row_number()
  30. over (partition by col.column_name order by uc.constraint_type desc) as row_flg
  31. from user_tab_columns col
  32. left join user_col_comments colc on colc.table_name = col.table_name and colc.column_name = col.column_name
  33. left join user_cons_columns ucc on ucc.table_name = col.table_name and ucc.column_name = col.column_name
  34. left join user_constraints uc on uc.constraint_name = ucc.constraint_name
  35. where col.table_name = upper(#{tableName})
  36. ) temp
  37. WHERE temp.row_flg = 1
  38. ORDER BY temp.column_id
  39. </if>
  40. <if test="@com.ruoyi.common.mybatis.helper.DataBaseHelper@isPostgerSql()">
  41. SELECT column_name, is_required, is_pk, sort, column_comment, is_increment, column_type
  42. FROM (
  43. SELECT c.relname AS table_name,
  44. a.attname AS column_name,
  45. d.description AS column_comment,
  46. CASE WHEN a.attnotnull AND con.conname IS NULL THEN 1 ELSE 0
  47. END AS is_required,
  48. CASE WHEN con.conname IS NOT NULL THEN 1 ELSE 0
  49. END AS is_pk,
  50. a.attnum AS sort,
  51. CASE WHEN "position"(pg_get_expr(ad.adbin, ad.adrelid),
  52. ((c.relname::text || '_'::text) || a.attname::text) || '_seq'::text) > 0 THEN 1 ELSE 0
  53. END AS is_increment,
  54. btrim(
  55. CASE WHEN t.typelem <![CDATA[ <> ]]> 0::oid AND t.typlen = '-1'::integer THEN 'ARRAY'::text ELSE
  56. CASE WHEN t.typtype = 'd'::"char" THEN format_type(t.typbasetype, NULL::integer)
  57. ELSE format_type(a.atttypid, NULL::integer) END
  58. END, '"'::text
  59. ) AS column_type
  60. FROM pg_attribute a
  61. JOIN (pg_class c JOIN pg_namespace n ON c.relnamespace = n.oid) ON a.attrelid = c.oid
  62. LEFT JOIN pg_description d ON d.objoid = c.oid AND a.attnum = d.objsubid
  63. LEFT JOIN pg_constraint con ON con.conrelid = c.oid AND (a.attnum = ANY (con.conkey))
  64. LEFT JOIN pg_attrdef ad ON a.attrelid = ad.adrelid AND a.attnum = ad.adnum
  65. LEFT JOIN pg_type t ON a.atttypid = t.oid
  66. WHERE (c.relkind = ANY (ARRAY ['r'::"char", 'p'::"char"]))
  67. AND a.attnum > 0
  68. AND n.nspname = 'public'::name
  69. ORDER BY c.relname, a.attnum
  70. ) temp
  71. WHERE table_name = (#{tableName})
  72. </if>
  73. <if test="@com.ruoyi.common.mybatis.helper.DataBaseHelper@isSqlServer()">
  74. SELECT
  75. cast(A.NAME as nvarchar) as column_name,
  76. cast(B.NAME as nvarchar) + (case when B.NAME = 'numeric' then '(' + cast(A.prec as nvarchar) + ',' + cast(A.scale as nvarchar) + ')' else '' end) as column_type,
  77. cast(G.[VALUE] as nvarchar) as column_comment,
  78. (SELECT 1 FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE Z WHERE TABLE_NAME = D.NAME and A.NAME = Z.column_name ) as is_pk,
  79. colorder as sort
  80. FROM SYSCOLUMNS A
  81. LEFT JOIN SYSTYPES B ON A.XTYPE = B.XUSERTYPE
  82. INNER JOIN SYSOBJECTS D ON A.ID = D.ID AND D.XTYPE='U' AND D.NAME != 'DTPROPERTIES'
  83. LEFT JOIN SYS.EXTENDED_PROPERTIES G ON A.ID = G.MAJOR_ID AND A.COLID = G.MINOR_ID
  84. LEFT JOIN SYS.EXTENDED_PROPERTIES F ON D.ID = F.MAJOR_ID AND F.MINOR_ID = 0
  85. WHERE D.NAME = #{tableName}
  86. ORDER BY A.COLORDER
  87. </if>
  88. </select>
  89. </mapper>