Python实现Mybatis Plus
from flask import g
from sqlalchemy import asc, desc
class QueryWrapperBuilder :
conditions = { }
order_by_info = { }
def __new__ ( cls, * args, ** kwargs) :
obj = super ( QueryWrapperBuilder, cls) . __new__( cls)
return obj
def __init__ ( self, obj) :
self. obj = obj
self. 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 == field
return self
def is_not_null ( self, field) :
self. conditions[ field. key] = None != field
return self
def eq ( self, field, value) :
if value:
self. conditions[ field. key] = field == value
return self
def gt ( self, field, value) :
if value:
self. conditions[ field. key] = field > value
return self
def gte ( self, field, value) :
if value:
self. conditions[ field. key] = field >= value
return self
def lt ( self, field, value) :
if value:
self. conditions[ field. key] = field < value
return self
def lte ( self, field, value) :
if value:
self. conditions[ field. key] = field <= value
return self
def between ( self, field, value) :
if value and isinstance ( value, list ) :
self. conditions[ field. key] = field. between( value[ 0 ] , value[ 1 ] )
return self
def in_ ( self, field, value) :
if value and isinstance ( value, list ) :
self. conditions[ field. key] = field. in_( value)
return self
def like ( self, field, value) :
if value:
self. conditions[ field. key] = field. like( f'% { value} %' )
return self
def order_by_desc ( self, * fields) :
if fields:
for field in fields:
self. order_by_info[ field. key] = desc( field)
return self
def order_by_asc ( self, * fields) :
if fields:
for field in fields:
self. order_by_info[ field. key] = asc( field)
return self
def 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