You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
4.8 KiB

2 years ago
  1. package com.spring.modules.code.utils;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
  5. import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
  6. import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
  7. import com.spring.modules.code.entity.CodeDrawing;
  8. import org.springframework.util.StringUtils;
  9. public class WrapperGenerate<T>{
  10. public LambdaQueryChainWrapper<T> generateChainLambdaLike(String column, SFunction<T,?> sqlColumn, LambdaQueryChainWrapper<T> wrapper){
  11. if (StringUtils.hasText(column)){
  12. StringBuilder str = new StringBuilder(column);
  13. if (column.length() > 2 && column.charAt(0) == '%' && column.charAt(column.length() - 1) == '%'){
  14. str.deleteCharAt(0);
  15. str.deleteCharAt(str.length() - 1);
  16. wrapper.like(StringUtils.hasText(column), sqlColumn, str.toString());
  17. }else if (column.length() > 1 && column.charAt(0) == '%'){
  18. str.deleteCharAt(0);
  19. wrapper.likeLeft(StringUtils.hasText(column), sqlColumn, str.toString());
  20. }else if (column.length() > 1 && column.charAt(column.length() - 1) == '%'){
  21. str.deleteCharAt(str.length() - 1);
  22. wrapper.likeRight(StringUtils.hasText(column), sqlColumn, str.toString());
  23. }else {
  24. wrapper.eq(StringUtils.hasText(column), sqlColumn, column);
  25. }
  26. }
  27. return wrapper;
  28. }
  29. public LambdaQueryWrapper<T> generateLambdaLike(String column, SFunction<T,?> sqlColumn, LambdaQueryWrapper<T> wrapper){
  30. if (StringUtils.hasText(column)){
  31. StringBuilder str = new StringBuilder(column);
  32. if (column.length() > 2 && column.charAt(0) == '%' && column.charAt(column.length() - 1) == '%'){
  33. str.deleteCharAt(0);
  34. str.deleteCharAt(str.length() - 1);
  35. wrapper.like(StringUtils.hasText(column), sqlColumn, str.toString());
  36. }else if (column.length() > 1 && column.charAt(0) == '%'){
  37. str.deleteCharAt(0);
  38. wrapper.likeLeft(StringUtils.hasText(column), sqlColumn, str.toString());
  39. }else if (column.length() > 1 && column.charAt(column.length() - 1) == '%'){
  40. str.deleteCharAt(str.length() - 1);
  41. wrapper.likeRight(StringUtils.hasText(column), sqlColumn, str.toString());
  42. }else {
  43. wrapper.eq(StringUtils.hasText(column), sqlColumn, column);
  44. }
  45. }
  46. return wrapper;
  47. }
  48. public QueryChainWrapper<T> generateChainLike(String column, String sqlColumn, QueryChainWrapper<T> wrapper){
  49. if (StringUtils.hasText(column)){
  50. StringBuilder str = new StringBuilder(column);
  51. if (column.length() > 2 && column.charAt(0) == '%' && column.charAt(column.length() - 1) == '%'){
  52. str.deleteCharAt(0);
  53. str.deleteCharAt(str.length() - 1);
  54. wrapper.like(StringUtils.hasText(column), sqlColumn, str.toString());
  55. }else if (column.length() > 1 && column.charAt(0) == '%'){
  56. str.deleteCharAt(0);
  57. wrapper.likeLeft(StringUtils.hasText(column), sqlColumn, str.toString());
  58. }else if (column.length() > 1 && column.charAt(column.length() - 1) == '%'){
  59. str.deleteCharAt(str.length() - 1);
  60. wrapper.likeRight(StringUtils.hasText(column), sqlColumn, str.toString());
  61. }else {
  62. wrapper.eq(StringUtils.hasText(column), sqlColumn, column);
  63. }
  64. }
  65. return wrapper;
  66. }
  67. public QueryWrapper<T> generateLike(String column, String sqlColumn, QueryWrapper<T> wrapper){
  68. if (StringUtils.hasText(column)){
  69. StringBuilder str = new StringBuilder(column);
  70. if (column.length() > 2 && column.charAt(0) == '%' && column.charAt(column.length() - 1) == '%'){
  71. str.deleteCharAt(0);
  72. str.deleteCharAt(str.length() - 1);
  73. wrapper.like(StringUtils.hasText(column), sqlColumn, str.toString());
  74. }else if (column.length() > 1 && column.charAt(0) == '%'){
  75. str.deleteCharAt(0);
  76. wrapper.likeLeft(StringUtils.hasText(column), sqlColumn, str.toString());
  77. }else if (column.length() > 1 && column.charAt(column.length() - 1) == '%'){
  78. str.deleteCharAt(str.length() - 1);
  79. wrapper.likeRight(StringUtils.hasText(column), sqlColumn, str.toString());
  80. }else {
  81. wrapper.eq(StringUtils.hasText(column), sqlColumn, column);
  82. }
  83. }
  84. return wrapper;
  85. }
  86. }