利用Java针对MySql封装的jdbc框架类JdbcUtils完整实现(包含增删改查、JavaBean反射原理,附源码)(二)

2014-11-24 03:13:16 · 作者: · 浏览: 9
{ List list = new ArrayList(); int index = 1; pstmt = connection.prepareStatement(sql); if(params != null && !params.isEmpty()){ for(int i = 0; i数据库连接 */ public void releaseConn(){ if(resultSet != null){ try{ resultSet.close(); }catch(SQLException e){ e.printStackTrace(); } } } /** * @param args */ public static void main(String[] args) throws SQLException { // TODO Auto-generated method stub JdbcUtils jdbcUtils = new JdbcUtils(); jdbcUtils.getConnection(); /*******************增*********************/ /* String sql = "insert into userinfo (username, pswd) values ( , ), ( , ), ( , )"; List params = new ArrayList(); params.add("小明"); params.add("123xiaoming"); params.add("张三"); params.add("zhangsan"); params.add("李四"); params.add("lisi000"); try { boolean flag = jdbcUtils.updateByPreparedStatement(sql, params); System.out.println(flag); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ /*******************删*********************/ //删除名字为张三的记录 /* String sql = "delete from userinfo where username = "; List params = new ArrayList(); params.add("小明"); boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);*/ /*******************改*********************/ //将名字为李四的密码改了 /* String sql = "update userinfo set pswd = where username = "; List params = new ArrayList(); params.add("lisi88888"); params.add("李四"); boolean flag = jdbcUtils.updateByPreparedStatement(sql, params); System.out.println(flag);*/ /*******************查*********************/ //不利用反射查询多个记录 /* String sql2 = "select * from userinfo "; List> list = jdbcUtils.findModeResult(sql2, null); System.out.println(list);*/ //利用反射查询 单条记录 String sql = "select * from userinfo where username = "; List params = new ArrayList(); params.add("李四"); UserInfo userInfo; try { userInfo = jdbcUtils.findSimpleRefResult(sql, params, UserInfo.class); System.out.print(userInfo); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

+----------+-------------+------+-----+---------+----------------+

是用Nvicat提前创建好的:

\

因为有两个接口用到了反射,因此对应的JavaBean UserInfo.java代码如下:

package domain;

import java.io.Serializable;

public class UserInfo implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private int id;
	private String username;
	private String pswd;
	
	public UserInfo() {
		// TODO Auto-generated constructor stub
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPswd() {
		return pswd;
	}

	public void setPswd(String pswd) {
		this.pswd = pswd;
	}

	@Override
	public String toString() {
		return "UserInfo [id=" + id + ", username=" + username + ", pswd="
				+ pswd + "]";
	}

}

补充说明:

1. 在安装完mysql-connector-java-gpl-5.1.26.exe后会发现找不到jar包,其实jar文件在C:\Program Files\MySQL\MySQL Connector J目录下,有两个jar包:

\

用哪一个都ok。在Java工程里新建一个文件夹libs,然后将mysql-connector-java-5.1.26-bin.jar拷贝过去,右键单击 add to build path就ok了。

2.抛开这个框架类JdbcUtils.java来说,操作数据库的一般性步骤如下:

(1)连接数据库,加载驱动: Class.forName(DRIVER); DRIVER = "com.mysql.jdbc.Driver";这本身就是反射!!

(2) 利用用户名和密码及数据库的名字连接,这一步才是真正的连接:

connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);

其中:String URL = "jdbc:mysql://localhost:3306/mydb";

(3)编写一个sql语句,其中的参数用 来代替,然后将参数写到List里。

执行:pstmt = connection.prepareStatement(s