1、创建 dbconfig.properties

driver=com.mysql.jdbc.Driver
dburl=jdbc\:mysql\://localhost\:3306/mytest
user=root
password=

2、创建 ConnectionFactory.java

 package com.test.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"); }
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;
}
}

3、抽象类 IdEntity.java

 package com.test.entity;

 public abstract class IdEntity {

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

4、User.java 继承抽象类IdEntity.java

 package com.test.entity;

 public class User extends IdEntity {
private String name;
private String password; 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;
}
@Override
public String toString() {
return "User [name=" + name + ", password=" + password + ", id=" + id
+ "]";
} }

5、Address.java 继承抽象类IdEntity.java

 package com.test.entity;

 public class Address extends IdEntity{

     private String address;
private int userid;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
@Override
public String toString() {
return "Address [address=" + address + ", userid=" + userid + ", id="
+ id + "]";
} }

6、UserDao.java 定义接口

 package com.test.dao;

 import java.sql.Connection;
import java.sql.SQLException; import com.test.entity.User; public interface UserDao { public void save(Connection conn,User user)throws SQLException; public void update(Connection conn,int id,User user) throws SQLException; public void delete(Connection conn,User user)throws SQLException; }

7、实现UserDao接口,UserDaoImpl.java

 package com.test.dao.impl;

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException; import com.test.dao.UserDao;
import com.test.entity.User; public class UserDaoImpl implements UserDao{ @Override
public void save(Connection conn, User user) throws SQLException {
PreparedStatement ps = conn.prepareCall("insert into person(name,password) values(?,?)");
ps.setString(, user.getName());
ps.setString(, user.getPassword());
ps.execute();
} @Override
public void update(Connection conn, int id, User user) throws SQLException {
String updateSql ="update person set name= ?,password=? where id =?";
PreparedStatement ps = conn.prepareStatement(updateSql);
ps.setString(, user.getName());
ps.setString(, user.getPassword());
ps.setInt(, id);
ps.execute();
} @Override
public void delete(Connection conn, User user) throws SQLException {
PreparedStatement ps = conn.prepareStatement("delete from uesr where id = ?");
ps.setInt(, user.getId());
ps.execute();
} }

8、测试类 UserDaoTest.java

 package com.test.testclass;

 import java.sql.Connection;
import java.sql.SQLException; import com.test.dao.UserDao;
import com.test.dao.impl.UserDaoImpl;
import com.test.entity.User;
import com.test.util.ConnectionFactory; public class UserDaoTest { public static void main(String[] args) {
Connection conn = null; try {
conn = ConnectionFactory.getInstance().makeConnection();
conn.setAutoCommit(false);
UserDao userDao = new UserDaoImpl();
User tom = new User();
tom.setName("tom");
tom.setPassword("");
userDao.save(conn, tom);
conn.commit();
} catch (SQLException e) {
try{
conn.rollback();
}catch(Exception e2){
e2.printStackTrace();
}
e.printStackTrace();
} }
}

JDBC编程之优化的更多相关文章

  1. 优化JDBC编程-多提提意见

    优化JDBC编程这是我根据MS SQL SERVER 2000 JDBC DRIVER HELP,并参考其它资料整理而成.ms的这个帮助文件实在有失大家风范,示例代码很.....有兴趣者可以去下载ht ...

  2. JDBC编程之程序优化

    -----------------siwuxie095 首先下载 MySQL 的 JDBC 驱动,下载链接: https://dev.mysql.com/downloads/connector/j/ ...

  3. JDBC编程之预编译SQL与防注入式攻击以及PreparedStatement的使用教程

      转载请注明原文地址: http://www.cnblogs.com/ygj0930/p/5876951.html 在JDBC编程中,常用Statement.PreparedStatement 和  ...

  4. JDBC编程之预编译SQL与防注入

    在JDBC编程中,常用Statement.PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedS ...

  5. 单独使用jdbc编程问题总结(一)

    在学习Mybatis之前,我们先来回顾JDBC编程的相关知识.在此基础上深入的学习Mybatis框架.如有错误,敬请指正. (一)首先我们既然要使用jdbc,当然是要操作数据库了.创建一个名为:myb ...

  6. 浅谈JDBC编程

    一.概述 1.为什么要用JDBC 数据库是程序不可或缺的一部分,每一个网站和服务器的建设都需要数据库.对于大多数应用程序员(此处不包含数据库开发人员)来说,我们更多的不是在DBMS中对数据库进行操纵, ...

  7. 02Mybatis_原生态jdbc编程中的问题总结——从而引生出为什么要用Mybatis

    我们先用jdbc去编写一个例子: 第一步:建表 /* SQLyog v10.2 MySQL - 5.1.72-community : Database - mybatis ************** ...

  8. JDBC编程的方式

    JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 从上面可以看出JDBC编程一般要如下步骤: 1. 加载数据库驱动 2. 创建并获取数据库连接 3. 创建jdbc stateme ...

  9. JAVA基础知识之JDBC——编程步骤及执行SQL

    JDBC编程步骤 下面以mysql数据库为例, 1.加载驱动 首先需要下载数据库的驱动jar文件,并且在eclipse包中加入到class path中去, 例如mysql的驱动文件 mysql-con ...

随机推荐

  1. Array.asList:数组转list时你一定要知道的“陷阱”!

    最近开发中,业务上处理,经常用到asList方法,这让我不经想起了它的很多容易让人犯错的地方或者误解的地方,所以就想抽出时间来,整理一下,和大家分享出来,深夜了,话不多说,主要以代码为主,简易的代码, ...

  2. 常用PC服务器LSI阵列卡配置

    通常,我们使用的DELL/HP/IBM三家的机架式PC级服务器阵列卡是从LSI的卡OEM出来的,DELL和IBM两家的阵列卡原生程度较高,没有做太多封装,可以用原厂提供的阵列卡管理工具进行监控:而HP ...

  3. DBMS_STATS常用方法(收集oracle信息)

    –收集数据库信息EXEC DBMS_STATS.gather_database_stats;EXEC DBMS_STATS.gather_database_stats(estimate_percent ...

  4. 腾讯云升级到PHP7

    1.删除之前安装的PHP yum remove php* php-common 2.安装yum源 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel ...

  5. 纯 CSS 创建各种不同的图形形状

    使用代码 矩形 .rectangle { width: 250px; height: 150px; background-color: #6DC75F; } <div></div&g ...

  6. MS SQL Sever数据库还原

    一.右键 数据库 二.点击 [还原文件和文件组(E)...],弹出下图的窗口界面 1.在 目标数据库 的输入框填写你的数据库名(注意这是新建一个数据库供还原使用,不能还原到已有的数据库) 三.点击[源 ...

  7. Design Pattern ——Factory Method&Abstract Factory

    今天开始复习设计模式.设计模式相关的资料有很多,概念性的东西就画个图就可以了.把关注点放在例子上,设计模式还是要使用中才有感受. 从Factory Method&Abstract Factor ...

  8. HTTP Content-type 对照表

    文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type) .*( 二进制流) application/octet-stream .tif ...

  9. 关于JavaScript对象的键和值

    一个JavaScript对象由键和值组成. 当一个给定键的值被设置为一个字符串.布尔值.数字.数组或对象时,我们把这个键称为属性. 当把键设置为函数时,我们把它叫做方法.

  10. java制作简单的坦克大战

    坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...