JavaWeb学习之路(二)--- 数据库操作优化
2017-01-08 03:37
232 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xss_main/article/details/54230412
新建一个类ConnectionFactory,封装Connection;
新建一个文件properties文件dbconfig.properties,存放数据库配置数据;
示例代码:
// ConnectionFactory.java package com.package.util; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; public class ConnectionFactory { private static String driver; private static String dburl; private static String user; private static String password; private static final ConnectionFactory factory = new ConnectionFactory(); private Connection conn; static { Properties prop = new Properties(); try { InputStream in = ConnectionFactory.class.getClassLoader().getResourceAsStream("dbconfig.properties"); prop.load(in); } catch (Exception e) { System.out.println("=========配置文件读取错误========"); } driver = prop.getProperty("driver"); dburl = prop.getProperty("dburl"); user = prop.getProperty("user"); password = prop.getProperty("password"); System.out.println("=========" + driver + "========"); System.out.println("=========" + dburl + "========"); System.out.println("=========" + user + "========"); System.out.println("=========" + password + "========"); } private ConnectionFactory() { } public static ConnectionFactory getInstance() { return factory; } public Connection makeConnection() { try { Class.forName(driver); conn = DriverManager.getConnection(dburl, user, password); } catch (Exception e) { e.printStackTrace(); } return conn; } }
// dbconfig.properties driver = com.mysql.jdbc.Driver dburl = jdbc:mysql://localhost:3306/test // test为数据库名称 user = root password =
完整示例:数据库中有一个表(tab_user),使用模型通过接口的方式,操作数据库中的数据;
数据模型:
// IdEntity package com.package.entity; public abstract class IdEntity { protected Long id; public Long getId() { return id; } public void setId(Long id) { this.id = id; } }
// user.java package com.package.entity; public class User extends IdEntity { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } private String password; private String email; @Override public String toString() { return "User [name=" + name + ", password=" + password + ", email=" + email + ", id=" + id + "]"; } }
接口文件:
// UserDao.java package com.package.dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import com.package.entity.User; public interface UserDao { public v 3ff7 oid save(Connection conn, User user) throws SQLException; public void update(Connection conn, Long id, User user) throws SQLException; public void delete(Connection conn, User user) throws SQLException; public ResultSet get(Connection conn, User user) throws SQLException; }
// 接口实现文件:
// UserDaoImpl.java package com.package.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.package.dao.UserDao; import com.package.entity.User; public class UserDaoImpl implements UserDao { @Override public void save(Connection conn, User user) throws SQLException { // TODO Auto-generated method stub PreparedStatement ps = conn.prepareCall("INSERT INTO tbl_user(name, password, email) VALUES (?,?,?)"); ps.setString(1, user.getName()); ps.setString(2, user.getPassword()); ps.setString(3, user.getEmail()); ps.execute(); } @Override public void update(Connection conn, Long id, User user) throws SQLException { // TODO Auto-generated method stub String updateSql = "UPDATE tbl_user SET name=?, password=?, email=? WHERE id=?"; PreparedStatement ps = conn.prepareStatement(updateSql); ps.setString(1, user.getName()); ps.setString(2, user.getPassword()); ps.setString(3, user.getEmail()); ps.setLong(4, user.getId()); ps.execute(); } @Override public void delete(Connection conn, User user) throws SQLException { // TODO Auto-generated method stub PreparedStatement ps = conn.prepareStatement("DELETE FROM tbl_user WHERE id=?"); ps.setLong(1, user.getId()); ps.execute(); }
执行:
package com.package.test; import java.sql.Connection; import com.package.dao.UserDao; import com.package.dao.impl.UserDaoImpl; import com.package.entity.User; import com.package.util.ConnectionFactory; public class UserDaoTest { public static void main(String[] args) { // TODO Auto-generated method stub Connection conn = null; try { conn = ConnectionFactory.getInstance().makeConnection(); conn.setAutoCommit(false); UserDao userDao = new UserDaoImpl(); User tom = new User(); tom.setName("Tom"); tom.setPassword("12345"); tom.setEmail("4342323432@qq.com"); userDao.save(conn, tom); conn.commit(); } catch (Exception e) { try { conn.rollback(); } catch (Exception e2) { } } } }
相关文章推荐
- 我的程序优化-尽量减少数据库连接操作
- 数据库优化——删除和更新操作对性能的影响
- 数据库操作优化(insert、up…
- 数据库性能优化三:程序操作优化
- 数据库操作优化(insert、update、delete、select)
- 数据库性能优化三:程序操作优化
- Android数据库批量操作的性能优化
- 2.如何优化操作大数据量数据库(改善SQL语句)
- 一个通用的操作数据库的方法,请大家指点、优化
- Codeigniter操作数据库表的优化写法总结
- 网站性能优化实践-for循环中的数据库操作
- 3.如何优化操作大数据量数据库(实现小数据量和海量数据的分页显示存储过程)
- 数据库建表原则,SQL数据库建表前期优化,SQL数据库操作优化,数据库命名规范
- 从实际项目中总结出的20条数据库操作优化经验
- 数据库性能优化三:程序操作优化
- 接着上一篇的代码做了一下优化。上一篇在获取查询结果时使用了fetchone,现在改成fetchall来减少对数据库的操作:
- 数据库性能优化三:程序操作优化提升性能
- 4.如何优化操作大数据量数据库(几十万以上数据)(如何选择聚合索引)
- Java软件开发基础知识梳理之(3)------JDCB操作数据库性能优化策略
- 从实际项目中总结出的20条数据库操作优化经验