Groovy中如何查询数据库判断指定字符串是否存在及实现前缀匹配查询
Groovy GORM 两类查询需求实现方案
基于你提供的 AccountNumber 域类,两种需求可直接通过GORM内置的动态查询方法实现,具体写法如下:
1. 判断指定字符串是否在数据库中存在
推荐使用countBy方法,仅统计匹配记录数,不需要拉取全量数据,性能更优:
// 入参为要判断的目标字符串,返回布尔值:存在为true,不存在为false def isStrExists(String targetStr) { return AccountNumber.countByNumber(targetStr) > 0 } // 调用示例 def target = "099900" println isStrExists(target)
也可以使用findBy方法实现,逻辑等价:
def isStrExists(String targetStr) { return AccountNumber.findByNumber(targetStr) != null }
2. 查询所有number字段以指定前缀开头的记录
使用SQL通配符%配合findAllBy*Like方法实现前缀匹配,%代表任意长度的任意字符:
// 入参为匹配前缀,返回所有符合条件的AccountNumber对象列表 def findByNumberPrefix(String prefix) { return AccountNumber.findAllByNumberLike("${prefix}%") } // 调用示例,查询以"98"开头的所有记录 def resultList = findByNumberPrefix("98") // 遍历输出结果 resultList.each { account -> println "id: ${account.id}, number: ${account.number}" }
注意:GORM动态查询方法默认会做参数绑定,无需额外处理SQL注入风险。
内容的提问来源于stack exchange,提问作者Private loop
相关产品推荐
相关产品推荐

