从数据库得到的结果集存放到List集合中

一、业务阐述

在开发中查询的数据库结果集,既要连接数据库、执行数据库操作、关闭数据库,还要把结果集的记录人为的设置到自己封装的DAO中等一系列的重复代码。

本文主要是想解决:用户只需要得到数据库连接,写sql语句,自己封装dao,其余的操作由封转的小框架解决这些重复的工作,用户得到的只是一个集合List。

List里面的元素有集合Map其中key是数据库中的字段类型,value是字段类型对应的值这个函数

DBUtil.executeQuery(con, sql)

List还提供集合元素存放的是dao对象,一条数据库记录对应一个dao对象,此函数是

DBUtil.executeQuery(con, sql,Vehicle.class)

以下提供源码的叙述

二、源码解说

测试类

Main.java代码  

  1. package com.hewen.dao.manage;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.List;
  7. public class Main
  8. {
  9. public static void main(String[] args)
  10. {
  11. Connection con;
  12. try {
  13. con = DBTest.getCon();
  14. } catch (SQLException e) {
  15. e.printStackTrace();
  16. return;
  17. }
  18. PreparedStatement pst = null;
  19. ResultSet rs = null;
  20. String sql = "select * from t_vehicle t where t.vehicle_id<4";
  21. /**
  22. * 该方法用到的技术是通过结果集的列属性的性质得到,没有用到反射机制
  23. * 这个测试用例也是把查询的结果集放到List集合
  24. * 里面的元素是集合Map,key是数据库中的字段类型,value是
  25. * 字段类型对应的值,
  26. * 查询的结果如:[{KIND_ID=1, DEF_FLAG=null, CHANNELNO=1, SN=陆震,(822)22911,13771000789,
  27. * BUYDATE=2010-02-26, DELETETIME=null, STAMP=2010-02-26, REGDATE=null, ISDELETED=0,
  28. * VEHICLE_ID=2, NUMBER_PLATE=苏B10001, VEHICLESTATE=待命状态(对应现场返回), USEDATE=2010-02-26,
  29. * INTERPHONENO=null, NUMBER_PLATE_TYPE_ID=4, TEL2=null, STYLE=null, COLOR=null,
  30. * INTERPHONEID=null, LASTMAINTAINTIME=null, INITDISTANCE=0, LAST_UPDATE_TIME=2010-02-26,
  31. *  REMARK=null, TEL=null, SUPERVISER=null},
  32. *  {KIND_ID=3, DEF_FLAG=null, CHANNELNO=1, SN=陆震,
  33. *  (822)22911,13771000789, BUYDATE=2010-02-26, DELETETIME=null, STAMP=2010-02-26,
  34. *  REGDATE=null, ISDELETED=0, VEHICLE_ID=3, NUMBER_PLATE=苏B90003,
  35. *  VEHICLESTATE=待命状态(对应现场返回), USEDATE=2010-02-26, INTERPHONENO=null,
  36. *  NUMBER_PLATE_TYPE_ID=4, TEL2=13151000793, STYLE=面包车, COLOR=白, INTERPHONEID=null,
  37. *  LASTMAINTAINTIME=null, INITDISTANCE=0, LAST_UPDATE_TIME=2010-02-26, REMARK=null,
  38. *   TEL=22916, SUPERVISER=杨兴华}]
  39. */
  40. try {
  41. List list=DBUtil.executeQuery(con, sql);
  42. System.out.println(list);
  43. } catch (SQLException e) {
  44. e.printStackTrace();
  45. }
  46. /**
  47. * 这个测试用例只是把查询的结果集中的某一条记录映射到了dao对象中,
  48. * 查询的结果如:
  49. * vehicle:vehicle_id: 2 numberPlate: 苏B10001 deleteDate: null
  50. vehicle:vehicle_id: 3 numberPlate: 苏B90003 deleteDate: null
  51. */
  52. /*  try {
  53. pst = con.prepareStatement(sql);
  54. rs = pst.executeQuery();
  55. while(rs.next()){
  56. Vehicle r = (Vehicle) DBUtil.getFirstObjectFromRs(rs, Vehicle.class);
  57. System.out.println("vehicle:" + r);
  58. }
  59. } catch (SQLException e) {
  60. e.printStackTrace();
  61. }finally{
  62. DBUtil.closeRs(rs);
  63. DBUtil.closePst(pst);
  64. DBUtil.closeCon(con);
  65. }*/
  66. /**
  67. * 方法是用的反射机制
  68. * 这个测试用例是测试executeQuery函数,把查询的结果集放到List集合
  69. * 并且集合元素存放的是dao对象,一条数据库记录对应一个dao对象,
  70. * 打印出来的结果如:
  71. * [vehicle_id: 2 numberPlate: 苏B10001 deleteDate: null,
  72. * vehicle_id: 3 numberPlate: 苏B90003 deleteDate: null]
  73. *
  74. */
  75. /*  try {
  76. List list=DBUtil.executeQuery(con, sql,Vehicle.class);
  77. System.out.println(list);
  78. } catch (SQLException e) {
  79. // TODO Auto-generated catch block
  80. e.printStackTrace();
  81. }*/
  82. }
  83. }

封装dao DBUtil类

Java代码  

  1. package com.hewen.dao.manage;
  2. import java.lang.reflect.InvocationTargetException;
  3. import java.lang.reflect.Method;
  4. import java.lang.reflect.Type;
  5. import java.sql.Connection;
  6. import java.sql.PreparedStatement;
  7. import java.sql.ResultSet;
  8. import java.sql.ResultSetMetaData;
  9. import java.sql.SQLException;
  10. import java.sql.Statement;
  11. import java.sql.Types;
  12. import java.util.ArrayList;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. import java.util.Map;
  16. /***
  17. * 注意利用查询出数据库的一条记录映射到相应的dao中,写相应的dao一定要注意字段,一定
  18. * 要与数据库的记录字段相对应,大小写可以忽略,但是字段不一致就返回错误的数据
  19. *
  20. * private static Object getValueFromRs(ResultSet rs, String fieldName, Type t) throws SQLException
  21. * 此接口有个小的问题就是如果,获取的字段值是空值或者为null,而你自己的需求就是想要获取的字段为一个
  22. * 默认的值,那就只需要客户该写这个方法,进行判断就可以
  23. * @author Administrator
  24. *
  25. */
  26. public class DBUtil {
  27. /**
  28. * 对操作的数据库回滚
  29. * @param con 对数据库操作所得到的链接
  30. */
  31. public static void rollBack(Connection con){
  32. try {
  33. con.rollback();
  34. } catch (SQLException e) {
  35. e.printStackTrace();
  36. }
  37. }
  38. /***
  39. *
  40. * @param con 数据库jdbc链接
  41. * @param sql 执行的sql语句
  42. * @return 返回查询的记录数,记录存储在集合List里面,
  43. * 里面的元素是集合Map,key是数据库中的字段类型,value是
  44. * 字段类型对应的值
  45. * @throws SQLException
  46. */
  47. public static List<Map<String, Object>> executeQuery(Connection con, String sql) throws SQLException{
  48. PreparedStatement pst = null;
  49. ResultSet rs = null;
  50. try {
  51. pst = con.prepareStatement(sql);
  52. rs = pst.executeQuery();
  53. return getListFromRsLowerCase(rs);
  54. }finally{
  55. closeRs(rs);
  56. closePst(pst);
  57. }
  58. }
  59. /***
  60. *  执行sql语句,把结果集存放到List集合里,集合的元素是dao对象
  61. * @param con 数据库得到的链接
  62. * @param sql 执行查询的sql语句
  63. * @param c   把一条条记录要映射的dao类中的对象中去
  64. * @return
  65. * @throws SQLException
  66. */
  67. public static List<Object> executeQuery(Connection con, String sql, Class<?> c) throws SQLException{
  68. PreparedStatement pst = null;
  69. ResultSet rs = null;
  70. try {
  71. pst = con.prepareStatement(sql);
  72. rs = pst.executeQuery();
  73. return getListFromRs(rs, c);
  74. }finally{
  75. closeRs(rs);
  76. closePst(pst);
  77. }
  78. }
  79. /**
  80. * 得到结果集存储到list中
  81. * @param rs 查询的结果集
  82. * @return
  83. * @throws SQLException
  84. */
  85. public static List<Map<String, Object>> getListFromRs(ResultSet rs) throws SQLException{
  86. ResultSetMetaData md = rs.getMetaData();//得到结果集列的属性
  87. int columns = md.getColumnCount();//得到记录有多少列
  88. int i;
  89. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  90. while(rs.next()){
  91. Map<String, Object> map = new HashMap<String, Object>();
  92. for(i = 0; i < columns; i++){
  93. map.put(md.getColumnName(i + 1), getValueByType(rs, md.getColumnType(i + 1), md.getColumnName(i + 1)));
  94. }
  95. list.add(map);
  96. }
  97. return list;
  98. }
  99. /**
  100. * 这个与getListFromRs(ResultSet rs)差不多,只是把数据库的字段变成小写
  101. *
  102. * @param rs
  103. * @return
  104. * @throws SQLException
  105. */
  106. public static List<Map<String, Object>> getListFromRsLowerCase(ResultSet rs) throws SQLException{
  107. ResultSetMetaData md = rs.getMetaData();
  108. int columns = md.getColumnCount();
  109. int i;
  110. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  111. while(rs.next()){
  112. Map<String, Object> map = new HashMap<String, Object>();
  113. for(i = 0; i < columns; i++){
  114. map.put(md.getColumnName(i + 1).toLowerCase(), getValueByType(rs, md.getColumnType(i + 1), md.getColumnName(i + 1)));
  115. }
  116. list.add(map);
  117. }
  118. return list;
  119. }
  120. /**
  121. * 这个与getListFromRs(ResultSet rs)功能一样,只是把数据库的字段变成大写
  122. * @param rs
  123. * @return
  124. * @throws SQLException
  125. */
  126. public static List<Map<String, Object>> getListFromRsUpperCase(ResultSet rs) throws SQLException{
  127. ResultSetMetaData md = rs.getMetaData();
  128. int columns = md.getColumnCount();
  129. int i;
  130. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  131. while(rs.next()){
  132. Map<String, Object> map = new HashMap<String, Object>();
  133. for(i = 0; i < columns; i++){
  134. map.put(md.getColumnName(i + 1).toUpperCase(), getValueByType(rs, md.getColumnType(i + 1), md.getColumnName(i + 1)));
  135. }
  136. list.add(map);
  137. }
  138. return list;
  139. }
  140. /***
  141. *
  142. * @param rs 查询的结果集
  143. * @param c  集合元素存放的dao对象
  144. * @return
  145. * @throws SQLException
  146. */
  147. public static List<Object> getListFromRs(ResultSet rs, Class<?> c) throws SQLException{
  148. List<Object> list = new ArrayList<Object>();
  149. try {
  150. while(rs.next()){
  151. Object o = initObjectFromRsIfExist(rs, c);
  152. list.add(o);
  153. }
  154. } catch (IllegalAccessException e) {
  155. e.printStackTrace();
  156. } catch (InstantiationException e) {
  157. e.printStackTrace();
  158. }
  159. return list;
  160. }
  161. /**
  162. *
  163. * @param rs 查询的结果集
  164. * @param c 结果集一条记录,而一条记录所对应的dao类
  165. * @return
  166. * @throws SQLException
  167. */
  168. public static Object getFirstObjectFromRs(ResultSet rs, Class<?> c) throws SQLException{
  169. Object o = null;
  170. try {
  171. o = initObjectFromRsIfExist(rs, c);
  172. } catch (InstantiationException e) {
  173. e.printStackTrace();
  174. } catch (IllegalAccessException e) {
  175. e.printStackTrace();
  176. }
  177. return o;
  178. }
  179. /***
  180. *
  181. * @param rs 查询出来的结果集
  182. * @param type SQL type from java.sql.Types
  183. * @param name 数据库记录所对应的字段名称
  184. * @return 返回一条记录的一个列值
  185. * @throws SQLException
  186. */
  187. private static Object getValueByType(ResultSet rs, int type, String name) throws SQLException{
  188. switch(type){
  189. case Types.NUMERIC:
  190. return rs.getLong(name);
  191. case Types.VARCHAR:
  192. //if(rs.getString(name)==null){
  193. //return "";
  194. //}
  195. return rs.getString(name);
  196. case Types.DATE:
  197. //if(rs.getDate(name)==null){
  198. //return System.currentTimeMillis();
  199. //  }
  200. return rs.getDate(name);
  201. case Types.TIMESTAMP:
  202. return rs.getTimestamp(name).toString().substring(0,rs.getTimestamp(name).toString().length()-2);
  203. case Types.INTEGER:
  204. return rs.getInt(name);
  205. case Types.DOUBLE:
  206. return rs.getDouble(name);
  207. case Types.FLOAT:
  208. return rs.getFloat(name);
  209. case Types.BIGINT:
  210. return rs.getLong(name);
  211. default:
  212. return rs.getObject(name);
  213. }
  214. }
  215. /***
  216. * 查询dao映射的字段是否在记录在数据库包含的字段
  217. * @param rs 查询的记录集
  218. * @param fieldName dao映射的字段
  219. * @return 如果包含在数据库记录集里面,返回true,否则false
  220. * @throws SQLException
  221. */
  222. private static boolean rsContainsFields(ResultSet rs, String fieldName) throws SQLException{
  223. ResultSetMetaData md = rs.getMetaData();
  224. for(int i = 0; i < md.getColumnCount(); i++){
  225. if(md.getColumnName(i + 1).equalsIgnoreCase(fieldName)){
  226. return true;
  227. }
  228. }
  229. return false;
  230. }
  231. /***
  232. * 这个函数与initObjectFromRsIfExist函数实现的功能是一样,只是
  233. * 没有判断dao中的字段是否与数据库记录所定义的字段是一样的,
  234. * 没有判断时如果自己设置的dao字段与数据库的字段不一致就会报异常
  235. * @param rs
  236. * @param c
  237. * @return
  238. * @throws InstantiationException
  239. * @throws SQLException
  240. * @throws IllegalAccessException
  241. */
  242. private static Object initObjectFromRs(ResultSet rs, Class<?> c) throws InstantiationException, SQLException, IllegalAccessException{
  243. Object o = c.newInstance();
  244. Method[] methods = o.getClass().getMethods();
  245. for(Method m: methods){
  246. if(m.getName().startsWith("set")){
  247. try {
  248. m.invoke(o, getParamValueFromRs(rs, m));
  249. } catch (IllegalArgumentException e) {
  250. throw new RuntimeException("IllegalArgumentException:" + e + "\nMethods:" + m.getName());
  251. } catch (InvocationTargetException e) {
  252. throw new RuntimeException("InvocationTargetException:" + e + "\nMethods:" + m.getName());
  253. }
  254. }
  255. }
  256. return o;
  257. }
  258. /***
  259. *
  260. * 把数据库的一条记录映射到相应的dao对象中,
  261. * 如果dao中的字段与数据库字段不一致,返回的就是dao数据类型定义的默认值
  262. * 如:dao的字段long vehicleID;而数据库的字段是vehicle_id,那么返回的
  263. * 就定义的默认值0.
  264. * @param rs 查询的结果集
  265. * @param c 结果集一条记录,而一条记录所对应的dao类
  266. * @return
  267. * @throws SQLException
  268. * @throws IllegalAccessException
  269. * @throws InstantiationException
  270. */
  271. private static Object initObjectFromRsIfExist(ResultSet rs, Class<?> c) throws SQLException, IllegalAccessException, InstantiationException{
  272. Object o = c.newInstance();//一条记录的dao,新建对象
  273. Method[] methods = o.getClass().getMethods();//dao对象所有的方法
  274. String field;
  275. for(Method m: methods){
  276. //得到dao字段,如getRegdate,转换成Regdate
  277. field = m.getName().substring(3);
  278. //查询dao映射的字段是否在记录在数据库包含的字段,dao方法对set开头的方法进行处理
  279. //因为要将结果集映射到dao里面
  280. if(m.getName().startsWith("set") && rsContainsFields(rs, field)){
  281. try {
  282. m.invoke(o, getParamValueFromRs(rs, m));
  283. } catch (IllegalArgumentException e) {
  284. throw new RuntimeException("IllegalArgumentException:" + e + "\nMethods:" + m.getName());
  285. } catch (InvocationTargetException e) {
  286. throw new RuntimeException("InvocationTargetException:" + e + "\nMethods:" + m.getName());
  287. }
  288. }
  289. }
  290. return o;
  291. }
  292. /***
  293. *
  294. * @param rs 查询的结果集
  295. * @param m  dao映射字段对应的一个set方法
  296. * @return
  297. * @throws SQLException
  298. */
  299. private static Object getParamValueFromRs(ResultSet rs, Method m) throws SQLException
  300. {
  301. String fieldName = m.getName().substring(3);
  302. Type type = m.getGenericParameterTypes()[0];//获取set方法参数的类型
  303. return getValueFromRs(rs, fieldName, type);
  304. }
  305. /**
  306. * 获取数据库一条记录的一个列值
  307. * @param rs 查询的结果集
  308. * @param fieldName dao数据字段,也就是数据库记录的数据字段类型
  309. * @param t 参数的数据类型
  310. * @return
  311. * @throws SQLException
  312. */
  313. private static Object getValueFromRs(ResultSet rs, String fieldName, Type t) throws SQLException{
  314. String type = t.toString();
  315. try{
  316. if(type.equals("int") || type.equals("class java.lang.Integer")){
  317. return rs.getInt(fieldName);
  318. }else if(type.equals("float") || type.equals("class java.lang.Float")){
  319. return rs.getFloat(fieldName);
  320. }else if(type.equals("double") || type.equals("class java.lang.Double")){
  321. return rs.getDouble(fieldName);
  322. }else if(type.equals("long") || type.equals("class java.lang.Long")){
  323. return rs.getLong(fieldName);
  324. }else if(type.equals("class java.lang.String")){
  325. return rs.getString(fieldName);
  326. }else if(type.equals("class java.sql.Timestamp")){
  327. return rs.getTimestamp(fieldName);
  328. }else if(type.equals("class java.sql.Date")){
  329. return rs.getDate(fieldName);
  330. }else if(type.equals("class java.sql.Time")){
  331. return rs.getTime(fieldName);
  332. }
  333. }catch(SQLException e){
  334. throw new SQLException("SQLException when get field:" + fieldName + "\n" + e);
  335. }
  336. throw new RuntimeException("getValueFromRsByField fail, field type is:" + type + ",field name is:" + fieldName);
  337. }
  338. /***
  339. * 关闭数据库多个结果集
  340. * @param rss
  341. */
  342. public static void closeRs(ResultSet... rss){
  343. for(ResultSet rs: rss){
  344. if(rs != null){
  345. try {
  346. rs.close();
  347. } catch (SQLException e) {
  348. }
  349. }
  350. }
  351. }
  352. /**
  353. * 关闭数据库多个psts
  354. * @param psts
  355. */
  356. public static void closePst(Statement... psts){
  357. for(Statement pst: psts){
  358. if(pst != null){
  359. try {
  360. pst.close();
  361. } catch (SQLException e) {
  362. }
  363. }
  364. }
  365. }
  366. /**
  367. * 关闭数据库所得到的多个链接
  368. * @param cons
  369. */
  370. public static void closeCon(Connection... cons){
  371. for(Connection con: cons){
  372. if(con != null)
  373. {
  374. try {
  375. con.close();
  376. } catch (SQLException e) {
  377. }
  378. }
  379. }
  380. }
  381. }

连接Oracle数据库类

Dbtest.java代码  

  1. package com.hewen.dao.manage;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.SQLException;
  5. /***
  6. * 这个是连接Oracle数据库
  7. * @author Administrator
  8. *
  9. */
  10. public class DBTest {
  11. public static Connection getCon() throws SQLException{
  12. try {
  13. Class.forName("oracle.jdbc.driver.OracleDriver");
  14. } catch (ClassNotFoundException e) {
  15. e.printStackTrace();
  16. return null;
  17. }
  18. String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
  19. String user = "avls";
  20. String password = "1";
  21. return DriverManager.getConnection(url, user, password);
  22. }
  23. }

封装的dao类

Vehicle.java代码  

  1. package com.hewen.dao.manage;
  2. import java.sql.Date;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. public class Vehicle{
  6. private long vehicle_Id;//车牌ID
  7. private String number_plate;//车牌号码
  8. private String def_flag;//车牌自定义别名
  9. private int number_plate_type_id;//拍照类型id
  10. private int kind_id;//车辆类型ID,如物流、出租等
  11. private String style;//车辆品牌如:夏利、奔驰、本田等
  12. private String color;//车辆颜色
  13. private String sn;//序列号
  14. private String interphoneid;//对讲机身份码
  15. private String interphoneno;//对讲机号
  16. private int channelno;//频道号
  17. private float initdistance;//初始里程
  18. private Date lastmaintaintime;//最后保养时间
  19. private String vehiclestate;//车辆状态,如正常使用,作废等
  20. private Date buydate;//购买时间
  21. private Date usedate;//使用时间
  22. private Date regdate;//登记时间
  23. private int isdeleted;//是否删除
  24. private Date deletedate;//删除时间
  25. private Date last_update_time;//最后更新时间
  26. private String remark;//备注
  27. private Date stamp;//入库时间
  28. private String superviser;//责任人姓名
  29. private String tel;//责任人电话一
  30. private String tel2;//责任人电话2
  31. public String getRemark() {
  32. return remark;
  33. }
  34. public void setRemark(String remark) {
  35. this.remark = remark;
  36. }
  37. public String toString(){
  38. return "vehicle_id: "+this.vehicle_Id+" numberPlate: "+this.number_plate+" deleteDate: "+this.deletedate;
  39. }
  40. //@Override
  41. public String tagetTableName() {
  42. return "t_used_vehicle";
  43. }
  44. //@Override
  45. public List<String> unEditFields() {
  46. List<String> list = new ArrayList<String>();
  47. list.add("remark");
  48. return list;
  49. }
  50. public String getNumber_plate() {
  51. return number_plate;
  52. }
  53. public void setNumber_plate(String number_plate) {
  54. this.number_plate = number_plate;
  55. }
  56. public String getDef_flag() {
  57. return def_flag;
  58. }
  59. public void setDef_flag(String def_flag) {
  60. this.def_flag = def_flag;
  61. }
  62. public int getNumber_plate_type_id() {
  63. return number_plate_type_id;
  64. }
  65. public void setNumber_plate_type_id(int number_plate_type_id) {
  66. this.number_plate_type_id = number_plate_type_id;
  67. }
  68. public int getKind_id() {
  69. return kind_id;
  70. }
  71. public void setKind_id(int kind_id) {
  72. this.kind_id = kind_id;
  73. }
  74. public String getStyle() {
  75. return style;
  76. }
  77. public void setStyle(String style) {
  78. this.style = style;
  79. }
  80. public String getColor() {
  81. return color;
  82. }
  83. public void setColor(String color) {
  84. this.color = color;
  85. }
  86. public String getSn() {
  87. return sn;
  88. }
  89. public void setSn(String sn) {
  90. this.sn = sn;
  91. }
  92. public String getInterphoneid() {
  93. return interphoneid;
  94. }
  95. public void setInterphoneid(String interphoneid) {
  96. this.interphoneid = interphoneid;
  97. }
  98. public String getInterphoneno() {
  99. return interphoneno;
  100. }
  101. public void setInterphoneno(String interphoneno) {
  102. this.interphoneno = interphoneno;
  103. }
  104. public int getChannelno() {
  105. return channelno;
  106. }
  107. public void setChannelno(int channelno) {
  108. this.channelno = channelno;
  109. }
  110. public float getInitdistance() {
  111. return initdistance;
  112. }
  113. public void setInitdistance(float initdistance) {
  114. this.initdistance = initdistance;
  115. }
  116. public Date getLastmaintaintime() {
  117. return lastmaintaintime;
  118. }
  119. public void setLastmaintaintime(Date lastmaintaintime) {
  120. this.lastmaintaintime = lastmaintaintime;
  121. }
  122. public String getVehiclestate() {
  123. return vehiclestate;
  124. }
  125. public void setVehiclestate(String vehiclestate) {
  126. this.vehiclestate = vehiclestate;
  127. }
  128. public Date getBuydate() {
  129. return buydate;
  130. }
  131. public void setBuydate(Date buydate) {
  132. this.buydate = buydate;
  133. }
  134. public Date getUsedate() {
  135. return usedate;
  136. }
  137. public void setUsedate(Date usedate) {
  138. this.usedate = usedate;
  139. }
  140. public Date getRegdate() {
  141. return regdate;
  142. }
  143. public void setRegdate(Date regdate) {
  144. this.regdate = regdate;
  145. }
  146. public int getIsdeleted() {
  147. return isdeleted;
  148. }
  149. public void setIsdeleted(int isdeleted) {
  150. this.isdeleted = isdeleted;
  151. }
  152. public Date getDeletedate() {
  153. return deletedate;
  154. }
  155. public void setDeletedate(Date deletedate) {
  156. this.deletedate = deletedate;
  157. }
  158. public Date getLast_update_time() {
  159. return last_update_time;
  160. }
  161. public void setLast_update_time(Date last_update_time) {
  162. this.last_update_time = last_update_time;
  163. }
  164. public Date getStamp() {
  165. return stamp;
  166. }
  167. public void setStamp(Date stamp) {
  168. this.stamp = stamp;
  169. }
  170. public String getSuperviser() {
  171. return superviser;
  172. }
  173. public void setSuperviser(String superviser) {
  174. this.superviser = superviser;
  175. }
  176. public String getTel() {
  177. return tel;
  178. }
  179. public void setTel(String tel) {
  180. this.tel = tel;
  181. }
  182. public String getTel2() {
  183. return tel2;
  184. }
  185. public void setTel2(String tel2) {
  186. this.tel2 = tel2;
  187. }
  188. public long getVehicle_Id() {
  189. return vehicle_Id;
  190. }
  191. public void setVehicle_Id(long vehicle_Id) {
  192. this.vehicle_Id = vehicle_Id;
  193. }
  194. }

运行的结果

运行的结果代码  

  1. [{vehiclestate=待命状态(对应现场返回), vehicle_id=2, interphoneid=null, deletetime=null, number_plate=苏B10001, regdate=null, initdistance=0, superviser=null, style=null, number_plate_type_id=4, tel=null, buydate=2010-02-26, isdeleted=0, kind_id=1, channelno=1, usedate=2010-02-26, remark=null, sn=陆震,(822)22911,13771000789, last_update_time=2010-02-26, interphoneno=null, color=null, tel2=null, stamp=2010-02-26, lastmaintaintime=null, def_flag=null}, {vehiclestate=待命状态(对应现场返回), vehicle_id=3, interphoneid=null, deletetime=null, number_plate=苏B90003, regdate=null, initdistance=0, superviser=杨兴华, style=面包车, number_plate_type_id=4, tel=22916, buydate=2010-02-26, isdeleted=0, kind_id=3, channelno=1, usedate=2010-02-26, remark=null, sn=陆震,(822)22911,13771000789, last_update_time=2010-02-26, interphoneno=null, color=白, tel2=13151000793, stamp=2010-02-26, lastmaintaintime=null, def_flag=null}]
  2. vehicle:vehicle_id: 2 numberPlate: 苏B10001 deleteDate: null
  3. vehicle:vehicle_id: 3 numberPlate: 苏B90003 deleteDate: null
  4. [vehicle_id: 2 numberPlate: 苏B10001 deleteDate: null,
  5. vehicle_id: 3 numberPlate: 苏B90003 deleteDate: null]
时间: 2024-10-24 11:45:24

从数据库得到的结果集存放到List集合中的相关文章

jQ禁止右键点击、隐藏搜索文本框文字、在新窗口中打开链接、检测浏览器、预加载图片、页面样式切换、所有列等高、动态控制页面字体大小、获得鼠标指针的X值Y值、验证元素是否为空、替换元素、延迟加载、验证元素是否存在于Jquery集合中、使DIV可点击、克隆对象、使元素居中、计算元素个数、使用Google主机上的Jquery类库、禁用Jquery效果、解决Jquery类库与其他Javascript类库冲突

1. 禁止右键点击 代码如下: $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); }); 2. 隐藏搜索文本框文字 代码如下: $(document).ready(function() { $("input.text1").val("Enter your search text here"); textFill($

C#将图片存放到SQL SERVER数据库中的方法

本文实例讲述了C#将图片存放到SQL SERVER数据库中的方法.分享给大家供大家参考.具体如下: 第一步: //获取当前选择的图片 this.pictureBox1.Image = Image.FromStream(this.openFileDialog1.OpenFile()); //获取当前图片的路径 string path = openFileDialog1.FileName.ToString(); //将制定路径的图片添加到FileStream类中 FileStream fs = ne

heartbeat v1(CRM)+DRBD实现数据库服务器高可用集群搭建

一. 方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自动切换到备机上继续提供服务,当主数据库修复完毕,又将服务切回继续由主mysql提供服务. 二. 方案优缺点 优点:安全性高.稳定性高.可用性高,出现故障自动切换, 缺点:只有一台服务器提供服务,成本相对较高.不方便扩展.可能会发生脑裂. 三. 方案架构图 四.  方案适用场景 本方案适用于数据库访

获取项目中文件,存放到Debug中。

说起这个,还真是费了一般功夫. 说个最简单的方法: 第一步:把需要生成到Debug中的文件放到项目中(注意:当前文件夹目录是什么样的,存放到Debug中也是什么样) 第二部:设置文件属性中 复制到输出目录(如果较新则复制:就是在内容更改后就更新,不复制:不会复制,始终复制:如果该文件需要修改,不建议选择此项) 生成操作(无,编译,内容,嵌入的资源) 第三步:已经完成了,是不是很简单. 还有个手动的方法(哈哈,有点麻烦哦!!!): /// <summary> /// 项目中资源文件保存到Debu

把raw目录下的几张照片存放到SD卡里面去

1 try 2 { 3 4 //SD卡路径 5 String filename =android.os.Environment 6 .getExternalStorageDirectory().getAbsolutePath() 7 + "/"+"1.JPG";//图片名称 8 //将文件从资源文件放到合适地方(资源文件也就是放在项目的res下的raw目录中的图片) 9 //将文件复制到SD卡中 10 File dir = new File(filename); 1

server下修改项目发布位置,存放到tomcat\webapps下(项目发布之前)

maven项目发布后默认存放到target目录下(如:E:\MavenWorks\babasport\target):开发web项目时,还需要手动复制到web服务器下(Tomcat) 如果能自动部署到Web服务器,而不用每次手动把target下编译好的war包拷贝到Tomcat下就更好了. 下面是具体的使用方法: 第一步:修改发布路径到webapps下 第二步:修改服务器启动和停止时间为300秒 第三步:1 发布到webapps下的根目录(项目访问URL不需要填写项目名,如直接 http://l

详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案

主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxen 官网下载页面: http://sourceforge.net/projects/dom4j/files/dom4j-2.0.0-ALPHA-2/ 也可以在网盘上面下载:http://yunpan.cn/cwaNde7UYN83d  提取码 e247 1 完成多条Emp信息的XML描述 1.1 问

关于将16进制的数据存放在char数组中的问题的解决方案

首先说明一点,题目提到的问题我目前并没有解决,我在此处发表随笔就是希望看到的同学们有会的帮我解决一下. 现在来说一下我的需求: 1.定义一个数组:unsigned char cmd[6] = {0xF0,0x11,0x01,0x65,0x87,0xA9}; 2.然后将这个数组的数据写入串口中,我在写的时候发现了cmd中的数据出现了乱码的现象,于是我采用下面一种方法: 3.使用sprintf函数,于是有了下面的代码: 1 char pBuf[9]; 2 sprintf(pBuf,"%x %x %x

Java连接MySQL数据库实现用户名密码的验证方法 Java语句中sql查询语句&#39;&#39; &quot;&quot;作用

//方法一,可以验证登录,但方法不实用.package com.swift; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class Logi