第一步:
在
grails工程中打开grails-app\conf\Config.groovy文件,在文件的最后加上如下代码:
gsql_connector {
c_url="jdbc:mysql://localhost:3306/
snmp?useUnicode=true&characterEncoding=UTF-8"
username="root"
password="root"
driverClas="com.mysql.jdbc.Driver"
}
注:
c_url:连接数据库的URL
username:连接数据库的用户名
password:连接数据库的密码
driverClas:连接数据库的驱动类
记得把mysql数据库驱动jar包放到工程的lib中
第二点:
写一个MysqlConnect
Service.groovy类,内容如下:
package com.test
import groovy.sql.Sql
import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
class MysqlConnectService {
boolean transactional = false
def serviceMethod() {
}
def getSql(){
return Sql.newInstance(CH.config.gsql_connector.c_url, CH.config.gsql_connector.username, CH.config.gsql_connector.password, CH.config.gsql_connector.driverClas)
}
def getSqlTopo(){
return Sql.newInstance(CH.config.gsql_connector.c_url, CH.config.gsql_connector.username, CH.config.gsql_connector.password, CH.config.gsql_connector.driverClas)
}
def getSql2(){
return Sql.newInstance(CH.config.gsql_connector.c_url, CH.config.gsql_connector.username, CH.config.gsql_connector.password, CH.config.gsql_connector.driverClas)
}
def getSqlbnmsdb(){
return Sql.newInstance(CH.config.gsql_connector.c_url, CH.config.gsql_connector.username, CH.config.gsql_connector.password, CH.config.gsql_connector.driverClas)
}
}
第三步:在业务逻辑类中,实例化com.test.MysqlConnectService 类,并定义一个获得数据库连接的方法:
def mysqlConnectService
/**
* 获得SQL连接对象
* @return SQL连接对象
*/
def getSql(){
return mysqlConnectService.getSql()
}
第四步:在业务逻辑类中定义一个查询方法:
//读取多行
def findAllStudent(){
def sqlConn=getSql()
String sql="select * from Students"
sqlConn.eachRow(sql,{
println it
})
}
//读取单行
def findStudentById(int id){
def sqlConn=getSql()
String sql="select * from Students where id=?"
def firstRow=sqlConn.firstRow(sql,[id])
println firstRow.name
}
注:
SqlConn方法中的参数有三个,第一个是SQL语句,第二个是SQL占位符值,第三个是闭包(firstRow方法不需要)
这样就可以不通过Domain获得数据库中的数据了。