标签:语句 JDBC 回顾 数据库 简单 resultSet preparedStatement user sql
JDBC操作
public class Demo {
public static void main(String[] args) {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=utf-8", "root", "123456");
// 定义sql语句
String sql = "select * from user where username = ?";
// 获取预处理statement
PreparedStatement preparedStatement = connection.prepareStatement(sql);
// 设置参数
preparedStatement.setString(1, "tom");
// 获取结果集
ResultSet resultSet = preparedStatement.executeQuery();
// 遍历结果集
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setUsername(resultSet.getString("username"));
System.out.println(user);
}
}
}
存在的问题
- 数据库频繁创建连接、释放资源造成系统资源浪费,从而影响系统性能。
- sql语句在代码中硬编码,造成代码不易维护,实际应用中sql变化的可能较大,sql变动需要改变java代码。
- 使用preparedStatement向占位符传参数存在硬编码,因为sql语句的where条件会变化,修改sql还要改代码,系统不易维护。
- 对结果集解析存在硬编码,sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封闭成pojo对象比较方便。
解决方法
- 数据库频繁创建、释放资源:使用连接池
- sql语句和参数硬编码:使用配置文件
- 手动解析封装返回结果集:使用反射、内省
标签:语句,JDBC,回顾,数据库,简单,resultSet,preparedStatement,user,sql 来源: https://www.cnblogs.com/maczhen/p/14484972.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。