1,错误用法一: if (name == "") { //do something } 2,错误用法二: if (name.equals("")) { //do something } 3,错误用法三: if (!name.equals("")) { //do something } 我们来解说一下: 上述错误用法1是初学者最容易犯,也最不容易被发现的错误,因为它们的语法本身没问题,Java编译器编译时不报错。但这种条件可能在运行时导致程序出现bug,永远也不会为true,也就是时说,if块里的语句永远也不会被执行。 上述用法二,用法三 的写法,是包括很多Java熟手也很容易犯的错误,为什么是错误的呢?也许你会感到纳闷。 对,它们的写法本身没错,但是,少了一个null判断的条件,试想,如果name=null的情况下,会发生什么后果呢?后果是,你的程序将抛出NullPointerException异常,系统将被挂起,不再提供正常服务。 当然,如果之前已经对name作了null判断的情况例外。 正确的写法应该先加上name != null的条件,如例: if (name != null && !name.equals("")) { //do something } 或者 if (!"".equals(name)) {//将""写在前头,这样,不管name是否为null,都不会出错。 //do something } 下面,我们举一个简单的例子: TestNullOrEmpty.java public class TestNullOrEmpty { public static void main(String[] args) { String value = null; testNullOrEmpty(value); value = ""; testNullOrEmpty(value); value = " "; testNullOrEmpty(value); value = "hello me! "; testNullOrEmpty(value); } static void testNullOrEmpty(String value) { if (value == null ) { //正确的写法 System.out.println("value is null. "); } else if ("".equals(value)) { //正确的写法 System.out.println("value is blank but not null. "); } else { System.out.println("value is /" " +…
January 22, 2018
JAVA: JDBC-Mysql操作类
package com.yunti.utils; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class JdbcUtils { private final static String URL = "jdbc:mysql://127.0.0.1:3306/network"; private final static String USER = "root"; private final static String PWD = ""; private final static String Driver = "com.mysql.jdbc.Driver"; private Connection connection; private PreparedStatement prepareStatement; private ResultSet resultSet; public JdbcUtils() { try { Class.forName(Driver); connection = DriverManager.getConnection(URL,USER,PWD); } catch (Exception e) { e.printStackTrace(); } } /** * 多条查询 * @param sql * @param params * @return * @throws SQLException */ public List<Map<String,Object>> findMoreByStatement(String sql,List<Object> params) throws SQLException{ List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); prepareStatement = connection.prepareStatement(sql); if(params!=null&&!params.isEmpty()){ for(int i=0;i<params.size();i++){ prepareStatement.setObject(i+1, params.get(i)); } } resultSet = prepareStatement.executeQuery(); ResultSetMetaData rsmd = resultSet.getMetaData(); while(resultSet.next()){ Map<String,Object> map = new HashMap<String,Object>(); for(int i=1;i<=rsmd.getColumnCount();i++){ String column_name = rsmd.getColumnName(i); Object column_value = resultSet.getObject(column_name); if(column_value == null){ column_value = ""; } map.put(column_name, column_value); } list.add(map); } return list; } /** * 单条查询 * @param sql * @param params * @return * @throws SQLException */ public Map<String,Object> findByStatement(String sql,List<Object> params) throws SQLException{ Map<String,Object> map = new HashMap<String,Object>(); prepareStatement = connection.prepareStatement(sql); if(params!=null&&!params.isEmpty()){ for(int i=0;i<params.size();i++){ prepareStatement.setObject(i+1, params.get(i)); } } resultSet = prepareStatement.executeQuery(); ResultSetMetaData rsmd = resultSet.getMetaData(); while(resultSet.next()){ for(int i=1;i<=rsmd.getColumnCount();i++){ String column_name = rsmd.getColumnName(i); Object column_value = resultSet.getObject(column_name); if(column_value == null){ column_value = ""; } map.put(column_name, column_value); } } return map; } /** * 反射单条查询 * @param sql * @param params * @param c * @return * @throws Exception */ public <T> T findByStatement(String sql,List<Object> params,Class<T> c) throws Exception{ T resultObj = null; prepareStatement = connection.prepareStatement(sql); if(params!=null&&!params.isEmpty()){ for(int i=0;i<params.size();i++){ prepareStatement.setObject(i+1, params.get(i)); } } resultSet = prepareStatement.executeQuery(); ResultSetMetaData rsmd = resultSet.getMetaData(); while(resultSet.next()){ resultObj = c.newInstance(); for(int i=1;i<=rsmd.getColumnCount();i++){ String column_name = rsmd.getColumnName(i); Object column_value = resultSet.getObject(column_name); if(column_value == null){ column_value = ""; } Field field = c.getDeclaredField(column_name); field.setAccessible(true); field.set(resultObj, column_value); } } return resultObj; } /** * 反射多条查询 * @param sql * @param params * @param c * @return * @throws Exception */ public <T> List<T> findMoreByStatement(String sql,List<Object> params,Class<T> c) throws Exception{ List<T> list = new ArrayList<T>(); prepareStatement = connection.prepareStatement(sql); if(params!=null&&!params.isEmpty()){ for(int i=0;i<params.size();i++){ prepareStatement.setObject(i+1, params.get(i)); } } resultSet = prepareStatement.executeQuery(); ResultSetMetaData rsmd = resultSet.getMetaData(); while(resultSet.next()){ T resultObj = c.newInstance(); for(int i=1;i<=rsmd.getColumnCount();i++){ String column_name = rsmd.getColumnName(i); Object column_value = resultSet.getObject(column_name); if(column_value == null){ column_value = ""; } Field field = c.getDeclaredField(column_name); field.setAccessible(true); field.set(resultObj, column_value); } list.add(resultObj); } return list; } /** * 数据增删改 * @param sql * @param params * @return * @throws SQLException */ public boolean updateByPrepareStatement(String sql,List<Object> params) throws SQLException{ boolean flag = false; int result = -1; prepareStatement = connection.prepareStatement(sql); if(params != null && !params.isEmpty()){ for (int i = 0; i < params.size(); i++) { prepareStatement.setObject(i+1, params.get(i)); } } result = prepareStatement.executeUpdate(); flag = result > 0 ? true : false; return flag; } /** * 资源释放 */ public void releaseConn(){ if(prepareStatement != null){ try { connection.close(); prepareStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
实例:
@Test public void TestDB() { Mysql mysql = new Mysql(); String sql = "select * from " + TABLE_USERS; logger.info(DB_URL); //List<Object> params = new ArrayList<>(); //params.add(1,"test"); try { List<Map<String, Object>> data = mysql.findMoreByStatement(sql, null); System.out.println(data); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { mysql.releaseConn(); } }
JAVA: JDBC入门教程(二) 通过JDBC进行简单的增删改查
JAVA:JDBC入门教程(三) PreparedStatement的使用