您现在的位置是:主页 > news > 网站开发时app打开很慢/购物网站排名

网站开发时app打开很慢/购物网站排名

admin2025/5/7 17:26:19news

简介网站开发时app打开很慢,购物网站排名,直播开发平台,福州移动网站建设ORM这一块一直用第三方框架,都忘记原生jdbc怎么写了,花了几个小时回忆整理一下。 引用jar:mysql-connector-java-5.0.5-bin.jar 创建公用私有变量 public static final String url "jdbc:mysql://127.0.0.1/oneshop";public static final Str…

网站开发时app打开很慢,购物网站排名,直播开发平台,福州移动网站建设ORM这一块一直用第三方框架,都忘记原生jdbc怎么写了,花了几个小时回忆整理一下。 引用jar:mysql-connector-java-5.0.5-bin.jar 创建公用私有变量 public static final String url "jdbc:mysql://127.0.0.1/oneshop";public static final Str…

ORM这一块一直用第三方框架,都忘记原生jdbc怎么写了,花了几个小时回忆整理一下。

引用jar:mysql-connector-java-5.0.5-bin.jar

 

创建公用私有变量

    public static final String url = "jdbc:mysql://127.0.0.1/oneshop";public static final String name = "com.mysql.jdbc.Driver";public static final String user = "root";public static final String password = "root";public Connection conn = null;private PreparedStatement pst = null;private ResultSet rs;

 

构造函数实例化打开连接 

public DB() throws ClassNotFoundException, SQLException {Class.forName(name);// 指定连接类型if (conn == null)conn = DriverManager.getConnection(url, user, password);// 获取连接}

 

关闭连接

public void close() throws SQLException {if (conn != null)conn.close();if (pst != null)pst.close();if (rs != null)rs.close();}

 

执行sql方法

public Boolean execute(String sql, String... params) {boolean bool = false;try {pst = conn.prepareStatement(sql);for (int i = 0; i < params.length; i++) {pst.setString((i + 1), params[i]);}bool = pst.execute();this.close();} catch (SQLException e) {e.printStackTrace();}return bool;}

 

查询返回一条数据

public Map<String, Object> get(String sql, String... params)throws SQLException {pst = conn.prepareStatement(sql);for (int i = 0; i < params.length; i++) {pst.setString((i + 1), params[i]);}rs = pst.executeQuery();Map<String, Object> map = new HashMap<String, Object>();ResultSetMetaData rsmd = pst.getMetaData();int col = rsmd.getColumnCount();while (rs.next()) {for (int i = 1; i < col; i++) {map.put(rsmd.getColumnName(i), rs.getObject(i));}}this.close();return map;}

 

查询返回集合

public List<Map<String, Object>> List(String sql, String... params)throws SQLException {pst = conn.prepareStatement(sql);for (int i = 0; i < params.length; i++) {pst.setString((i + 1), params[i]);}rs = pst.executeQuery();List<Map<String, Object>> rList = new ArrayList<Map<String, Object>>();Map<String, Object> map;ResultSetMetaData rsmd = pst.getMetaData();int col = rsmd.getColumnCount();while (rs.next()) {map = new HashMap<String, Object>();for (int i = 1; i < col; i++) {map.put(rsmd.getColumnName(i), rs.getObject(i));}rList.add(map);}return rList;}

 

我们常用返回的是实体,而不是map,所以使用了JSONArray

不过这个需要引用很多jar

分别是:

  json-lib-2.4-jdk15.jar

  ezmorph-1.0.6.jar

  commons-beanutils-1.8.3.jar

  commons-collections-3.2.1.jar

  commons-codec-1.6.jar  

  commons-io-2.2.jar

  commons-lang-2.6.jar

  commons-logging-1.1.1.jar

  这么一大堆jar是个什么鬼?现在可是轻量级服务,怎么能有这么多,,本人表示很烦,决定后面有时间写一个,不过这里就算了,以后再说吧(偷个懒....)

  

  单个查询

  

public <T> T getEntity(String sql, Class<T> t) throws SQLException {pst = conn.prepareStatement(sql);rs = pst.executeQuery();Map<String, Object> map = get(sql);JSONArray jr = JSONArray.fromObject(map);@SuppressWarnings("unchecked")T result = (T) JSONArray.toCollection(jr, t);return result;}

 

 查询返回集合

public <T> List<T> getList(String sql, Class<T> t) throws SQLException {pst = conn.prepareStatement(sql);rs = pst.executeQuery();List<Map<String, Object>> rList = List(sql);JSONArray jr = JSONArray.fromObject(rList);@SuppressWarnings("unchecked")List<T> resultList = (List<T>) JSONArray.toCollection(jr, t);return resultList;}

 

这样写返回实体有2个限制:

  1.实体字段名必须与查询返回的字段名一致,否则无法赋值。

  2.只能查询当前实体

果然还是只能自己写一个,思路也大概有了:

   1.给实体添加注解,通过反射找到实体字段名与数据库对应字段名,从而解决第一个问题。

   2.外键关联的字段可以通过查询的时候as 表名.列名 去解析赋值,解决第二个问题。

嗯,就是这样。 

 

转载于:https://www.cnblogs.com/fanmiao/p/6278173.html