| | |
| | | package com.whyc.service; |
| | | |
| | | import com.whyc.mapper.CallBack; |
| | | import com.whyc.util.ActionUtil; |
| | | import com.whyc.util.ThreadLocalUtil; |
| | | import net.sf.json.JSONArray; |
| | | import net.sf.json.JSONObject; |
| | | import org.apache.ibatis.session.SqlSession; |
| | | import org.apache.ibatis.session.SqlSessionFactory; |
| | | import org.mybatis.spring.SqlSessionTemplate; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.sql.PreparedStatement; |
| | | import java.sql.ResultSet; |
| | | import java.sql.SQLException; |
| | | import javax.swing.*; |
| | | import java.sql.*; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | |
| | | private SqlSessionTemplate sqlSessionTemplate; |
| | | |
| | | // 自定义执行SQL |
| | | public List executeQuery(String sql, CallBack call){ |
| | | public JSONArray executeQuery(String sql){ |
| | | PreparedStatement ps = null; |
| | | ResultSet rs = null; |
| | | SqlSession sqlSession = openSession(); |
| | | JSONArray jsonArray = new JSONArray(); |
| | | try { |
| | | ps=sqlSession.getConnection().prepareStatement(sql); |
| | | rs=ps.executeQuery(); |
| | | ResultSetMetaData metaData = rs.getMetaData(); |
| | | int colCnt = metaData.getColumnCount(); |
| | | while (rs.next()) { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | for(int i=1;i<=colCnt;i++){ |
| | | String property=metaData.getColumnName(i); |
| | | Object obj=rs.getObject(i); |
| | | if(obj instanceof java.util.Date ){ |
| | | //jsonObject.put(property, ActionUtil.sdf.format(obj)); |
| | | jsonObject.put(property, ThreadLocalUtil.format((java.util.Date) obj,1)); |
| | | }else{ |
| | | jsonObject.put(property,obj); |
| | | } |
| | | } |
| | | JSONObject.toBean(jsonObject,Object.class); |
| | | jsonArray.add(jsonObject); |
| | | } |
| | | } catch (SQLException throwables) { |
| | | throwables.printStackTrace(); |
| | | }finally { |
| | | closeSession(rs,ps,sqlSession); |
| | | } |
| | | return jsonArray; |
| | | } |
| | | |
| | | // 自定义执行SQL |
| | | public List executeQuery_call(String sql, CallBack call){ |
| | | PreparedStatement ps = null; |
| | | ResultSet rs = null; |
| | | SqlSession sqlSession = openSession(); |
| | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 封装所有更新的操作(添加,删除,修改) |
| | | * @param sql |
| | | * @param values |
| | | * @return |
| | | */ |
| | | public int executeUpdate(String sql, Object[] values){ |
| | | PreparedStatement ps = null; |
| | | ResultSet rs = null; |
| | | SqlSession sqlSession = openSession(); |
| | | int flag=0; |
| | | try { |
| | | ps = sqlSession.getConnection().prepareStatement(sql); |
| | | if(values != null){ |
| | | for (int i = 0; i < values.length; i++) { |
| | | ps.setObject(i+1, values[i]); |
| | | } |
| | | } |
| | | flag = ps.executeUpdate(); |
| | | } catch (SQLException e) { |
| | | e.printStackTrace(); |
| | | }finally{ |
| | | closeSession(rs,ps,sqlSession); |
| | | } |
| | | return flag; |
| | | } |
| | | //执行sql语句 |
| | | public boolean execute(String sql){ |
| | | PreparedStatement ps = null; |
| | | SqlSession sqlSession = openSession(); |
| | | boolean rest = true; |
| | | try{ |
| | | ps = sqlSession.getConnection().prepareStatement(sql); |
| | | ps.execute(); |
| | | |
| | | }catch(SQLException ex) { |
| | | ex.printStackTrace(); |
| | | rest = false; |
| | | }finally { |
| | | closeSession(null,ps,sqlSession); |
| | | } |
| | | |
| | | return rest; |
| | | } |
| | | // 开启链接 |
| | | private SqlSession openSession() { |
| | | SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory(); |
| | |
| | | // 关闭链接 |
| | | private void closeSession(ResultSet rs,PreparedStatement ps,SqlSession sqlSession) { |
| | | try { |
| | | rs.close(); |
| | | ps.close(); |
| | | sqlSession.close(); |
| | | if(rs!=null){ |
| | | rs.close(); |
| | | } |
| | | if(ps!=null){ |
| | | ps.close(); |
| | | } |
| | | if(sqlSession!=null){ |
| | | sqlSession.close(); |
| | | } |
| | | |
| | | } catch (SQLException throwables) { |
| | | throwables.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | public boolean makeManualCommit( ArrayList<String> al_sql_strs){ |
| | | PreparedStatement ps = null; |
| | | SqlSession sqlSession = openSession(); |
| | | Connection mysql_con=sqlSession.getConnection(); |
| | | boolean exe_res = true; |
| | | try { |
| | | mysql_con.setAutoCommit(false); |
| | | |
| | | for(int n=0; n<al_sql_strs.size(); n++) { |
| | | if(true == exe_res) { |
| | | exe_res = executeCreateTableNoclose(mysql_con,al_sql_strs.get(n)); |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | if(true == exe_res) { |
| | | mysql_con.commit(); |
| | | } |
| | | } catch (SQLException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | exe_res = false; |
| | | } finally { |
| | | try { |
| | | if(false == exe_res) { |
| | | mysql_con.rollback(); |
| | | } |
| | | mysql_con.setAutoCommit(true); |
| | | } catch (SQLException e1) { |
| | | // TODO Auto-generated catch block |
| | | e1.printStackTrace(); |
| | | }finally { |
| | | closeSession(null,ps,sqlSession); |
| | | } |
| | | } |
| | | return exe_res; |
| | | } |
| | | |
| | | //执行sql语句with no colse |
| | | public static boolean executeCreateTableNoclose(Connection mysql_con,String sql_str) |
| | | { |
| | | PreparedStatement ps=null; |
| | | |
| | | boolean rest = true; |
| | | try |
| | | { |
| | | ps = mysql_con.prepareStatement(sql_str); |
| | | ps.setQueryTimeout(600); |
| | | ps.execute(); |
| | | } |
| | | catch(SQLException ex) |
| | | { |
| | | ex.printStackTrace(); |
| | | rest = false; |
| | | |
| | | }finally { |
| | | try { |
| | | ps.close(); |
| | | } catch (SQLException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | return rest; |
| | | } |
| | | } |