1.官网WCDB.Swift
创建出model
实现TableCodable
协议
如下:
class VolumeUserModel:TableCodable
{
var identifier = 0
var BASICTON_QAN: Int = 0
var BASICTON_TAG: String = ""
var BZ: String = ""
var CAL_STATUS: String = ""
var CB_SL: Int = 0
var CBNUMBER: Int = 0
var CBZTS: String = ""
var COUNT_QAN: String = ""
var FREEPULL_TAG: String = ""
var IS_CALC: String = ""
var METERC_CALIBRE: Int = 0
var QFJE: Int = 0
var SCZT: Int = 0
...
static var tableName: String { "VolumeUserModel" }
var lastInsertedRowID: Int64 = 0
var isAutoIncrement: Bool = true
// typealias Properties = CodingKeys
enum CodingKeys: String,CodingTableKey {
typealias Root = VolumeUserModel
static let objectRelationalMapping = TableBinding(CodingKeys.self)
case identifier
case BASICTON_QAN
case BASICTON_TAG
case BZ
case CAL_STATUS
case CB_SL
case CBNUMBER
...
static var columnConstraintBindings: [VolumeUserModel.CodingKeys : ColumnConstraintBinding]? {
return [
identifier:ColumnConstraintBinding(isPrimary:true)
]
}
}
}
这里要注意下 enum CodingKeys里面出现的所有case 必须在类上有对应的属性 否则会报错,
'VolumeUserModel' does not conform to protocol 'Decodable'
'VolumeUserModel' does not conform to protocol 'Encodable'
如图:
![](https://img.haomeiwen.com/i2392761/48b88eaf6bc63294.png)
千万注意
-
CodingKeys
中所有case
均会在表中创建出对应的字段。如果不想创建。就不要在case
中加某个字段
4.计算Count 如下cCount
即为满足条件的长度
let whereSql1 = (VolumeUserModel.Properties.VOLUME_NO == obj.VOLUME_NO) && (VolumeUserModel.Properties.SCZT == 1)
let whereSql2 = (VolumeUserModel.Properties.VOLUME_NO == obj.VOLUME_NO) && (VolumeUserModel.Properties.CBZTS == "已抄")
let cCount = try? WCDBDataBaseManager.defaultDatabase.getValue(on: VolumeUserModel.Properties.identifier.count(), fromTable: VolumeUserModel.tableName, where: whereSql1, orderBy: nil, limit: nil, offset: nil).int32Value
5.附上条件查询page, size,condition
的代码吧。懒得写了, 简单的记录下,这运算符重载被他玩的贼6.真佩服tx
团队。
func queryVolumeUserList(searchModel:IVUserSearchModel) -> [[String:Any]] {
let userId = SimpleOperation.getRecordUserData()?.USER_ID ?? ""
var whereSql = (VolumeUserModel.Properties.USER_ID == userId)
if !searchModel.volumeNo.isEmpty {
whereSql = whereSql && (VolumeUserModel.Properties.VOLUME_NO == searchModel.volumeNo)
}
if !searchModel.userbKh.isEmpty {
whereSql = whereSql && (VolumeUserModel.Properties.USERB_KH.like("%\(searchModel.userbKh)%"))
}
if !searchModel.userbSbbk.isEmpty {
whereSql = whereSql && (VolumeUserModel.Properties.USERB_SBBK == searchModel.userbSbbk)
}
if !searchModel.cbzts.isEmpty {
whereSql = whereSql && (VolumeUserModel.Properties.CBZTS == searchModel.cbzts)
}
if searchModel.sczt != -1 {
whereSql = whereSql && (VolumeUserModel.Properties.SCZT == searchModel.sczt)
}
let orderByUserbJbh = [VolumeUserModel.Properties.USERB_JBH.asOrder(by: .ascending)]
let models:[VolumeUserModel] = WCDBDataBaseManager.shared.qureyObjectsFromDb(fromTable: VolumeUserModel.tableName, where: whereSql, orderBy:orderByUserbJbh , limit: searchModel.size, offset: searchModel.page * searchModel.size) ?? []
var arr:[[String:Any]] = []
for obj in models {
let dic = SimpleOperation.jsonObj(model: obj)
// uLog(dic)
arr.append(dic)
}
return arr
}
网友评论