目前我正在使用grails和MySQL.i想要在点击锚标签时执行我自己的查询示例“SELECT fullName from User”。
我的例子,我解决了
class InsertDataController {
def index() { }
def sample() {
InsertData insertData=new InsertData();
insertData.show();
}
}
域类
import groovy.sql.Sql
class InsertData {
def dataSource
def show(){
System.out.println("demo show");
def sql = new Sql(dataSource)
def rows = sql.rows("SELECT fullName from User")
rows.each { row ->
System.out.println("demo data"+row.fullName);
log.debug row.fullName
}
sql.close()
}
class User {
String userName
String password
String fullName
String toString(){
"${fullName}"
}
static constraints = {
fullName();
userName(unique:true);
password(password:true);
}
}
任何人都可以建议如何解决这个问题 我想知道如何为这个
编写控制器和模型谢谢,
答案 0 :(得分:0)
InsertData类将是一个服务(InsertDataService),它将注入到控制器InsertDataController中。 User类将是一个域类。
控制器类看起来像:
class InsertDataController {
def insertDataService
def index() { }
def sample() {
insertDataService.show()
}
}
答案 1 :(得分:0)
您无需注入数据源来执行自定义查询,请在show方法中尝试此操作:
User.findAll(“usr.fullName from User usr”)?. each {user-> println用户 }
答案 2 :(得分:0)
Instead of using def sql = new Sql(dataSource) in domain class use
def sql = Sql.newInstance(dataSource)
your Domain class can be modified as
import groovy.sql.Sql
class InsertData {
def dataSource
def show(){
def sql = Sql.newInstance(dataSource)
sql.eachRow("SELECT fullName from User")
{
println "the fullname is ${it.fullname}"
}
}
YOUR CONTROLLER AS
class InsertDataController {
def index() { }
def sample() {
InsertData insertData=new InsertData();
insertData.show();
}
}