一、首先从数据库说起
1、证明有记录存在时
选用Oracle时,可以用rownum>1,而不需要查询出所有数据。
选用MySQL时,由于没有rownum可以用,所以 select ... where .. limit 1 代替。
2、mysql字符集问题
创建数据库时要指定utf-8编码,这样不用去修改my.ini文件。
CREATE DATABASE leshr DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
这样一来在cmd命令行模式下查询显示乱码
这样解决:set names gbk;
3、mysql 主键问题
用uuid()函数生成
二、c3p0连接池的使用
public class DbPoolUtil {
private static DbPoolUtil instance;
private static ComboPooledDataSource ds;
private DbPoolUtil() {
try {
ds = new ComboPooledDataSource();
ds.setUser("root");
ds.setPassword("sa");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/leshr");
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setInitialPoolSize(2);
ds.setMinPoolSize(1);
ds.setMaxPoolSize(10);
ds.setMaxStatements(50);
ds.setMaxStatementsPerConnection(50); ds.setMaxIdleTime(60);
} catch (PropertyVetoException e) {
System.out.println("加载数据库失败!");
e.printStackTrace();
}
}
public static final DbPoolUtil getInstance() {
if (instance == null) {
instance = new DbPoolUtil();
}
return instance;
}
public synchronized final Connection getConnection() {
Connection conn = null;
try {
conn = ds.getConnection();
} catch (SQLException e) {
System.out.println("获取数据库连接失败!");
e.printStackTrace();
}
return conn;
}
}
三、Struts2-Json-Plugin的使用
1、首先看下action是如何写的
POJO类:
public class Hr_appl {
private String LA_ID;
private String LA_PID;
private int LA_ORDER;
private String LA_NAME;
private String LA_URL;
private String LA_OPTION;
private String LA_PARAM;
private String LA_DESC;
.....省略getter setter
}
Dao类:
public List<Hr_appl> getAll(Connection conn) throws Exception {
List<Hr_appl> list = new ArrayList<Hr_appl>();
String sql = "select * from HR_APPL";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Hr_appl appl = new Hr_appl();
appl.setLA_DESC(rs.getString("LA_DESC"));
appl.setLA_ID(rs.getString("LA_ID"));
appl.setLA_NAME(rs.getString("LA_NAME"));
appl.setLA_OPTION(rs.getString("LA_OPTION"));
appl.setLA_ORDER(rs.getInt("LA_ORDER"));
appl.setLA_PARAM(rs.getString("LA_PARAM"));
appl.setLA_PID(rs.getString("LA_PID"));
appl.setLA_URL(rs.getString("LA_URL"));
list.add(appl);
}
rs.close();
return list;
}
action类:
public class AppListAction extends ActionSupport {
private List appls;
private int totalCount;
public int getTotalCount() {
return appls.size();
}
public List getAppls() {
return appls;
}
public void setAppls(List appls) {
this.appls = appls;
}
@Override
public String execute() {
Hr_applDao dao = new Hr_applDaoImpl();
Connection conn = DbPoolUtil.getInstance().getConnection();
try {
appls = dao.getAll(conn);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return SUCCESS;
}
}
2、再配置struts.xml
<constant name="struts.devMode" value="true" /> <constant name="struts.i18n.encoding" value="UTF-8" /> <package name="extjs" extends="json-default"> <action name="appList" class="com.njit.action.AppListAction"> <result type="json"></result> </action> </package>
3、看ExtJs前台如何使用
var store = new Ext.data.JsonStore({ url : "appList.action", //strus2请求 root : "appls", //和action类中的变量对应 totalProperty : "totalCount", //和action类中的变量对应 autoLoad : true, fields : ["LA_NAME", "LA_ID", "LA_ORDER", "LA_OPTION","LA_URL", "LA_DESC"] });