package org.easyframe.tutorial.lesson7;
import java.sql.SQLException;
import jef.codegen.EntityEnhancer;
import jef.database.DbClient;
import jef.database.DbClientBuilder;
import jef.database.DbMetaData;
import jef.database.NativeCall;
import jef.database.ORMConfig;
import jef.database.SqlTemplate;
import org.easyframe.tutorial.lesson7.entity.Employee;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* !!!!!!!!!!!!!!!!!!!!!!!!!!!
* 注意:这个案例演示存储过程的使用,针对MySQL数据库设计。Derby不支持。
* @author jiyi
*
*/
public class Case3 {
private static DbClient db;
@BeforeClass
public static void setup() throws SQLException {
//****************************************************
//* 请先将此处的URL配置成一个可以连接的MYSQL数据库地址 *
//****************************************************
db = new DbClientBuilder("jdbc:mysql://localhost:3306/test","root","admin").build();
ORMConfig.getInstance().setDebugMode(false);
db.dropTable(Employee.class);
db.createTable(Employee.class);
Employee e=new Employee();
e.setId("100000");
e.setName("刘备");
e.setSalary(10000.0);
db.insert(e);
e=new Employee();
e.setId("100001");
e.setName("关羽");
e.setSalary(8000.0);
db.insert(e);
e=new Employee();
e.setId("100002");
e.setName("张飞");
e.setSalary(7000.0);
db.insert(e);
ORMConfig.getInstance().setDebugMode(true);
DbMetaData meta=db.getMetaData(null);
//如果存储过程不存在,就创建存储过程
if(!meta.existsProcdure(null, "update_salary")){
meta.executeScriptFile(Case3.class.getResource("/update_salary.sql"),"@");
}
}
@Test
public void testProducre() throws SQLException{
System.out.println("调整工资前——");
System.out.println(db.selectAll(Employee.class));
NativeCall nc=db.createNativeCall("update_salary", String.class,int.class);
nc.execute("100002",2);
nc.execute("100001", 1);
System.out.println("调整工资后——");
System.out.println(db.selectAll(Employee.class));
}
@Test
public void test123() throws SQLException{
SqlTemplate t=db.getSqlTemplate(null);
String s="'今天是'||str(cast(year(current_date)/100+1 as int))||'世纪'";
String trunced=t.getExpressionValue(s, String.class);
System.out.println(trunced);
}
}