mapper.py.vm 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. # -*- coding: utf-8 -*-
  2. # @Author : {{ table.function_author }}
  3. # @FileName: {{ underscore(table.class_name) }}_mapper.py
  4. # @Time : {{ datetime }}
  5. from typing import List
  6. from ruoyi_generator.domain.entity import {{ table.class_name }}
  7. from ruoyi_generator.ext import db
  8. from sqlalchemy import select, update, delete, text
  9. from datetime import datetime
  10. class {{ table.class_name }}Mapper:
  11. """{{ table.function_name }}Mapper"""
  12. @staticmethod
  13. def select_list({{ table.business_name }}: {{ table.class_name }}) -> List[{{ table.class_name }}]:
  14. """
  15. 查询{{ table.function_name }}列表
  16. Args:
  17. {{ table.business_name }} ({{ table.class_name }}): {{ table.function_name }}对象
  18. Returns:
  19. List[{{ table.class_name }}]: {{ table.function_name }}列表
  20. """
  21. try:
  22. # 构建查询条件
  23. stmt = select({{ table.class_name }})
  24. # 添加分页条件
  25. if {{ table.business_name }}.page_num and {{ table.business_name }}.page_size:
  26. offset = ({{ table.business_name }}.page_num - 1) * {{ table.business_name }}.page_size
  27. stmt = stmt.offset(offset).limit({{ table.business_name }}.page_size)
  28. result = db.session.execute(stmt).scalars().all()
  29. return list(result) if result else []
  30. except Exception as e:
  31. print(f"查询{{ table.function_name }}列表出错: {e}")
  32. return []
  33. @staticmethod
  34. def select_by_id({{ underscore(table.pk_column.java_field) if table.pk_column }}: int) -> {{ table.class_name }}:
  35. """
  36. 根据ID查询{{ table.function_name }}
  37. Args:
  38. {{ underscore(table.pk_column.java_field) if table.pk_column }} (int): {{ table.pk_column.column_comment if table.pk_column }}
  39. Returns:
  40. {{ table.class_name }}: {{ table.function_name }}对象
  41. """
  42. try:
  43. stmt = select({{ table.class_name }}).where({{ table.class_name }}.{{ underscore(table.pk_column.java_field) if table.pk_column }} == {{ underscore(table.pk_column.java_field) if table.pk_column }})
  44. result = db.session.execute(stmt).scalar_one_or_none()
  45. return result
  46. except Exception as e:
  47. print(f"根据ID查询{{ table.function_name }}出错: {e}")
  48. return None
  49. @staticmethod
  50. def insert({{ table.business_name }}: {{ table.class_name }}) -> int:
  51. """
  52. 新增{{ table.function_name }}
  53. Args:
  54. {{ table.business_name }} ({{ table.class_name }}): {{ table.function_name }}对象
  55. Returns:
  56. int: 插入的记录数
  57. """
  58. try:
  59. # 设置创建时间和更新时间
  60. now = datetime.now()
  61. {{ table.business_name }}.create_time = now
  62. {{ table.business_name }}.update_time = now
  63. db.session.add({{ table.business_name }})
  64. db.session.commit()
  65. return 1
  66. except Exception as e:
  67. db.session.rollback()
  68. print(f"新增{{ table.function_name }}出错: {e}")
  69. return 0
  70. @staticmethod
  71. def update({{ table.business_name }}: {{ table.class_name }}) -> int:
  72. """
  73. 修改{{ table.function_name }}
  74. Args:
  75. {{ table.business_name }} ({{ table.class_name }}): {{ table.function_name }}对象
  76. Returns:
  77. int: 更新的记录数
  78. """
  79. try:
  80. # 设置更新时间
  81. {{ table.business_name }}.update_time = datetime.now()
  82. # 使用ORM方式更新数据
  83. db.session.merge({{ table.business_name }})
  84. db.session.commit()
  85. return 1
  86. except Exception as e:
  87. db.session.rollback()
  88. print(f"修改{{ table.function_name }}出错: {e}")
  89. return 0
  90. @staticmethod
  91. def delete_by_ids(ids: List[int]) -> int:
  92. """
  93. 批量删除{{ table.function_name }}
  94. Args:
  95. ids (List[int]): ID列表
  96. Returns:
  97. int: 删除的记录数
  98. """
  99. try:
  100. stmt = delete({{ table.class_name }}).where({{ table.class_name }}.{{ underscore(table.pk_column.java_field) if table.pk_column }}.in_(ids))
  101. result = db.session.execute(stmt)
  102. db.session.commit()
  103. return result.rowcount
  104. except Exception as e:
  105. db.session.rollback()
  106. print(f"批量删除{{ table.function_name }}出错: {e}")
  107. return 0