【Java】Jdbc基础代码以及问题总结

数据库(名称为database)信息

所需jar包

实体类

public class User {
	private String username;
	private String password;
	
/................/
/................/
/................/
	
}
public class JdbcTemplateSource {
	
	//Jdbc最原始代码
	@Test
	public void JdbcSource() {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			//加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			conn = (Connection) DriverManager.getConnection("jdbc:mysql:///database", "root", "root");		
			String sql = "select * from test where username=?";
			//预编译sql
			pstmt = (PreparedStatement) conn.prepareStatement(sql);
			//pstmt是从1开始 , hql是从0开始
			pstmt.setString(1, "aa");
			rs = pstmt.executeQuery();
			
			//光标一开始位于第一行之前 next后才能移到第一行 才能进行getString操作
			rs.next();
			String username = rs.getString("username");
			String password = rs.getString("password");
			
			User user = new User();
			user.setUsername(username);
			user.setPassword(password);
			
			System.out.println(user);
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			try {
				rs.close();
				pstmt.close();
				conn.close();
			}catch(SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
}

问题总结:

1.数据库连接,使用时创建,使用完之后释放,对数据库进行频繁的开启和关闭,造成数据库资源浪费,影响性能

  *解决:使用数据库连接池管理数据库连接

2.将sql语句硬编码(写死了,固定了)到java代码中,如果sql语句要修改,需要重新编译java代码,硬编码就不利于系统维护

  *解决:将sql语句配置在xml中

3.向preparedStatement中设置参数,对占位符号和设置参数值,硬编码在java代码中,同样不利于系统维护

  *解决:也将占位符和参数配置在xml中

4.从resultSet(getString)等方法获取数据,同样也是硬编码,不利于维护

  *解决:将查询的结果集,自动映射成java对象

猜你喜欢

转载自blog.csdn.net/TypantK/article/details/83036531