builder_select.lua 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. local result = require("mysql.result")
  2. local mysql_builder_select = {}
  3. mysql_builder_select.__index = mysql_builder_select
  4. --[[
  5. 创建一个新的 fw_mysql_builder_select 对象
  6. @return 返回一个新的 fw_mysql_builder_select 对象
  7. ]]
  8. function mysql_builder_select.new(__module)
  9. local instance = setmetatable({}, mysql_builder_select)
  10. instance.module = __module
  11. return instance
  12. end
  13. --[[
  14. 添加 int32 类型的条件
  15. @param name 字段名称
  16. @param expression 条件表达式
  17. @param value 值
  18. @return 返回 mysql_builder_select 对象自身,以便链式调用
  19. ]]
  20. function mysql_builder_select:where_i32(name, expression, value)
  21. self.module:where_i32(name, expression, value)
  22. return self
  23. end
  24. --[[
  25. 添加 int64 类型的条件
  26. @param name 字段名称
  27. @param expression 条件表达式
  28. @param value 值
  29. @return 返回 mysql_builder_select 对象自身,以便链式调用
  30. ]]
  31. function mysql_builder_select:where_i64(name, expression, value)
  32. self.module:where_i64(name, expression, value)
  33. return self
  34. end
  35. --[[
  36. 添加 double 类型的条件
  37. @param name 字段名称
  38. @param expression 条件表达式
  39. @param value 值
  40. @return 返回 mysql_builder_select 对象自身,以便链式调用
  41. ]]
  42. function mysql_builder_select:where_dob(name, expression, value)
  43. self.module:where_dob(name, expression, value)
  44. return self
  45. end
  46. --[[
  47. 添加字符串类型的条件
  48. @param name 字段名称
  49. @param expression 条件表达式
  50. @param value 值
  51. @return 返回 mysql_builder_select 对象自身,以便链式调用
  52. ]]
  53. function mysql_builder_select:where_str(name, expression, value)
  54. self.module:where_str(name, expression, value)
  55. return self
  56. end
  57. --[[
  58. 添加自定义表达式的条件
  59. @param expression 条件表达式
  60. @return 返回 mysql_builder_select 对象自身,以便链式调用
  61. ]]
  62. function mysql_builder_select:where_expression(expression)
  63. self.module:where_expression(expression)
  64. return self
  65. end
  66. --[[
  67. 添加 LIKE 条件
  68. @param name 字段名称
  69. @param value 值
  70. @return 返回 mysql_builder_select 对象自身,以便链式调用
  71. ]]
  72. function mysql_builder_select:where_like(name, value)
  73. self.module:where_like(name, value)
  74. return self
  75. end
  76. --[[
  77. 设置查询的表名
  78. @param table_name 表名
  79. @return 返回 mysql_builder_select 对象自身,以便链式调用
  80. ]]
  81. function mysql_builder_select:table(table_name)
  82. self.module:table(table_name)
  83. return self
  84. end
  85. --[[
  86. 设置查询的字段
  87. @param table 字段表
  88. @return 返回 mysql_builder_select 对象自身,以便链式调用
  89. ]]
  90. function mysql_builder_select:field(table)
  91. self.module:field(table)
  92. return self
  93. end
  94. --[[
  95. 设置分页参数
  96. @param page 页码
  97. @param count 每页记录数
  98. @return 返回 mysql_builder_select 对象自身,以便链式调用
  99. ]]
  100. function mysql_builder_select:page(page, count)
  101. self.module:page(page, count)
  102. return self
  103. end
  104. --[[
  105. 设置查询限制
  106. @param start 起始位置
  107. @param count 记录数
  108. @return 返回 mysql_builder_select 对象自身,以便链式调用
  109. ]]
  110. function mysql_builder_select:limit(start, count)
  111. self.module:limit(start, count)
  112. return self
  113. end
  114. --[[
  115. 设置排序
  116. @param field 字段名称
  117. @param sort 排序方式(升序或降序)
  118. @return 返回 mysql_builder_select 对象自身,以便链式调用
  119. ]]
  120. function mysql_builder_select:orderby(field, sort)
  121. self.module:orderby(field, sort)
  122. return self
  123. end
  124. --[[
  125. 清空查询条件
  126. ]]
  127. function mysql_builder_select:clear()
  128. self.module:clear()
  129. end
  130. --[[
  131. 执行查询
  132. @return 返回 mysql_result 对象
  133. ]]
  134. function mysql_builder_select:query()
  135. return result.new(self.module:query())
  136. end
  137. --[[
  138. 获取查询结果的记录数
  139. @return 返回记录数
  140. ]]
  141. function mysql_builder_select:count()
  142. return self.module:count()
  143. end
  144. return mysql_builder_select