builder_select.lua 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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, fw_toint(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, fw_toint(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(fw_toint(page), fw_toint(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(fw_toint(start), fw_toint(count))
  112. return self
  113. end
  114. --[[
  115. 设置排序
  116. @param orderby 排序语句
  117. @return 返回 mysql_builder_select 对象自身,以便链式调用
  118. ]]
  119. function mysql_builder_select:orderby(orderby)
  120. self.module:orderby(orderby)
  121. return self
  122. end
  123. --[[
  124. 设置分组
  125. @param groupby 排序语句
  126. @return 返回 mysql_builder_select 对象自身,以便链式调用
  127. ]]
  128. function mysql_builder_select:groupby(expd)
  129. self.module:groupby(expd)
  130. return self
  131. end
  132. --[[
  133. 设置分组结果
  134. @param having 排序语句
  135. @return 返回 mysql_builder_select 对象自身,以便链式调用
  136. ]]
  137. function mysql_builder_select:having(expd)
  138. self.module:having(expd)
  139. return self
  140. end
  141. --[[
  142. 清空查询条件
  143. ]]
  144. function mysql_builder_select:clear()
  145. self.module:clear()
  146. end
  147. --[[
  148. 执行查询
  149. @return 返回 mysql_result 对象
  150. ]]
  151. function mysql_builder_select:query()
  152. return result.new(self.module:query())
  153. end
  154. --[[
  155. 获取查询结果的记录数
  156. @return 返回记录数
  157. ]]
  158. function mysql_builder_select:count()
  159. return self.module:count()
  160. end
  161. return mysql_builder_select