jfinalmysql存儲過程
❶ jfinal怎麼連接mysql
先創建個jdbc.properties
在裡面寫上連接資料庫的信息
不寫jdbc.properties的話 直接把連接資料庫所需的參數寫進去也行
❷ jfinal中能不能使用mysql自定義函數
jfinal 是直接將 sql 扔給 JDBC 執行的,所以終極回答是,只要是 JDBC 支持,那 jfinal 就支持。
❸ jfinal中動態sql是一般是怎麼使用的
動態sql一般用在存儲過程中,可以在存儲過程中使用DDL或DML語句,如創建刪除操作。 語法:execute immediate 'DDL或DML語句'
❹ 求助java調用MYSQL存儲過程的問題
importjava.sql.CallableStatement;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.Types;
/*
*對應的存儲過程
DROPPROCEDUREIFEXISTS`pro_num_user`;
delimiter;;
CREATEPROCEDURE`pro_num_user`(INuser_namevarchar(10),OUTcount_numINT)
READSSQLDATA
BEGIN
SELECTCOUNT(*)INTOcount_numFROMtab_userWHERE'name'=user_name;
END
;;
delimiter;
*/
publicclassTest{
publicstaticfinalStringDRIVER_CLASS="com.mysql.jdbc.Driver";
publicstaticfinalStringURL="jdbc:mysql://127.0.0.1:3306/test";
="root";
="acbee";
publicstaticvoidmain(String[]args)throwsException{
test1();
test2();
}
publicstaticvoidtest1()throwsException
{
Class.forName(DRIVER_CLASS);
Connectionconnection=DriverManager.getConnection(URL,USERNAME,PASSWORD);
Stringsql="{CALLpro_num_user(?,?)}";//調用存儲過程
CallableStatementcstm=connection.prepareCall(sql);//實例化對象cstm
cstm.setString(1,"myd");//存儲過程輸入參數
//cstm.setInt(2,2);//存儲過程輸入參數
cstm.registerOutParameter(2,Types.INTEGER);//設置返回值類型即返回值
cstm.execute();//執行存儲過程
System.out.println(cstm.getInt(2));
cstm.close();
connection.close();
}
publicstaticvoidtest2()throwsException
{
Class.forName(DRIVER_CLASS);
Connectionconnection=DriverManager.getConnection(URL,USERNAME,PASSWORD);
Stringsql="{CALLpro_number(?,?,?)}";//調用存儲過程
CallableStatementcstm=connection.prepareCall(sql);//實例化對象cstm
cstm.setInt(1,2);//存儲過程輸入參數
cstm.setInt(2,2);//存儲過程輸入參數
cstm.registerOutParameter(3,Types.INTEGER);//設置返回值類型即返回值
cstm.execute();//執行存儲過程
System.out.println(cstm.getInt(3));
cstm.close();
connection.close();
}
}
❺ java 怎麼調用mysql 存儲過程
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;
/*
* 對應的存儲過程
DROP PROCEDURE IF EXISTS `pro_num_user`;
delimiter ;;
CREATE PROCEDURE `pro_num_user`(IN user_name varchar(10) ,OUT count_num INT)
READS SQL DATA
BEGIN
SELECT COUNT(*) INTO count_num FROM tab_user WHERE 'name'=user_name;
END
;;
delimiter ;
*/
public class Test {
public static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://127.0.0.1:3306/test";
public static final String USERNAME = "root";
public static final String PASSWORD = "acbee";
public static void main(String[] args) throws Exception {
test1();
test2();
}
public static void test1() throws Exception
{
Class.forName(DRIVER_CLASS);
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "{CALL pro_num_user(?,?)}"; //調用存儲過程
CallableStatement cstm = connection.prepareCall(sql); //實例化對象cstm
cstm.setString(1, "myd"); //存儲過程輸入參數
//cstm.setInt(2, 2); // 存儲過程輸入參數
cstm.registerOutParameter(2, Types.INTEGER); // 設置返回值類型 即返回值
cstm.execute(); // 執行存儲過程
System.out.println(cstm.getInt(2));
cstm.close();
connection.close();
}
public static void test2() throws Exception
{
Class.forName(DRIVER_CLASS);
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "{CALL pro_number(?,?,?)}"; //調用存儲過程
CallableStatement cstm = connection.prepareCall(sql); //實例化對象cstm
cstm.setInt(1, 2); // 存儲過程輸入參數
cstm.setInt(2, 2); // 存儲過程輸入參數
cstm.registerOutParameter(3, Types.INTEGER); // 設置返回值類型 即返回值
cstm.execute(); // 執行存儲過程
System.out.println(cstm.getInt(3));
cstm.close();
connection.close();
}
}
❻ jfinal 插入數據時,怎麼使用mysql的UUID
update test set id = UUID();MYSQL默認值設置UUID函數實際其函數除TIMESTAMP外都 MYSQL默認值目前能數或者CURRENTTIMESTAMP
需要實現UUID默認值功能則該表INSERT觸發器實現:
update test set id = UUID();
create TRIGGER test_insert
AFTER INSERT ON test
FOR each ROW
BEGIN
update test set id = UUID();
end;
般主鍵id都用AUTO_INCREMENTuuid()適合做主鍵
❼ 用Jfinal 獲取MySQL的Year類型,為什麼會帶上日期
jdbc 對於 mysql 的 year 類型處理比較詭異,這個在 jfinal 開發之初就發現過,所以不建議使用這個類型,可以使用 integer 類型代替它,省心省力。
最後補充一下,除了 blob、clob這兩種類型之外,jfinal 對所有jdbc返回的數據都未經過任何加工或者轉換,都是原封不動地轉交給了開發者,所以這種類型相關的問題,直接參考 jdbc 對相關資料庫欄位類型的官方文檔即可。
jfinal 不方便干預這個行為,因為不同的資料庫支持不同的數據類型,而且jdbc對其也有不同的轉換規則,開發者的習慣也不同,所以原封不動地將數據轉交給開發者是比較好的選擇。
❽ jfinal怎麼查詢存儲過程
您好,我在別的論壇也看到您的問題,很高興為您解答: 仔細跑了一遍,其實不用那麼復雜,你寫一個全局handler就OK了! 在nextHandler.handle(target, request, response, isHandled); 前處理request,後處理response!