Python实现Mybatis Plus
from flask import g
from sqlalchemy import asc, descclass QueryWrapperBuilder : conditions = { } order_by_info = { } def __new__ ( cls, * args, ** kwargs) : obj = super ( QueryWrapperBuilder, cls) . __new__( cls) return objdef __init__ ( self, obj) : self. obj = objself. conditions = { } self. order_by_info = { } @classmethod def builder ( cls, obj= None ) : """:param obj: 数据库模型类:return:""" return cls( obj) def is_null ( self, field) : self. conditions[ field. key] = None == fieldreturn selfdef is_not_null ( self, field) : self. conditions[ field. key] = None != fieldreturn selfdef eq ( self, field, value) : if value: self. conditions[ field. key] = field == valuereturn selfdef gt ( self, field, value) : if value: self. conditions[ field. key] = field > valuereturn selfdef gte ( self, field, value) : if value: self. conditions[ field. key] = field >= valuereturn selfdef lt ( self, field, value) : if value: self. conditions[ field. key] = field < valuereturn selfdef lte ( self, field, value) : if value: self. conditions[ field. key] = field <= valuereturn selfdef between ( self, field, value) : if value and isinstance ( value, list ) : self. conditions[ field. key] = field. between( value[ 0 ] , value[ 1 ] ) return selfdef in_ ( self, field, value) : if value and isinstance ( value, list ) : self. conditions[ field. key] = field. in_( value) return selfdef like ( self, field, value) : if value: self. conditions[ field. key] = field. like( f'% { value} %' ) return selfdef order_by_desc ( self, * fields) : if fields: for field in fields: self. order_by_info[ field. key] = desc( field) return selfdef order_by_asc ( self, * fields) : if fields: for field in fields: self. order_by_info[ field. key] = asc( field) return selfdef filter ( self) : return [ v for k, v in self. conditions. items( ) ] def order_by_filter ( self) : return [ v for k, v in self. order_by_info. items( ) ] def lambda_query ( self) : return self