`
lilonglai
  • 浏览: 15102 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDBC实现数据库表格到java对象的转换。

阅读更多
  在Java领域,当人们谈到对象持久化的时候,大多人都能想到hibernate。使用hibernate能够简化Java开发,并且使Java代码具有良好的移植性。不管换成什么样的数据库,上层的代码都一样,只要在hibernate配置文件里,加上一点点修改就能完成任务,它平衡了各大数据库的差异,以统一的接口实现了数据库的通常操作。
  hibernate到底带给了我们什么呢?数据库里的表格可以当做Java类看,而里面的记录则可以看成Java对象。而hibernate最主要要做的事情就是如何将记录映射成Java类对象。hibernate还提供了数据库连接池和对操作的数据库对象管理的方案,提交客户响应速度。
  下面将给出一个例子,使用jdbc映射数据库,从而揭露hibernate的原理。
简单领域对象User.java
package com.model;
public class User {
private Integer id;
private String username;
private String password;

public User() {
super();
}

public User(Integer id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}

public Integer getId() {
return id;
}

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

public String getUsername() {
return username;
}

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

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}

操作接口UserManager.java
package com.manager;
import java.util.List;
import com.model.User;

public interface UserManager {
User get(Integer id);
User get(String username,String password);
List<User> getAll();
void save(User user);
void update(User user);
}

接口的实现 UserDao.java
package com.manager;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.model.User;

public class UserDao implements UserManager {
private String driverName;
private String url;
private String username;
private String password;

public UserDao() {
super();
}

public UserDao(String driverName, String url, String username,
String password) {
super();
this.driverName = driverName;
this.url = url;
this.username = username;
this.password = password;
}

public String getDriverName() {
return driverName;
}

public void setDriverName(String driverName) {
this.driverName = driverName;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

public String getUsername() {
return username;
}

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

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

private Connection getConnection() {
try {
Class.forName(driverName);
return DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}

@Override
public User get(Integer id) {
// TODO Auto-generated method stub
String queryString = "select * from user where id=" + id;
Connection conn;
User user = new User();
if ((conn = getConnection()) == null)
return null;
try {
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery(queryString);
while (result.next()) {
Integer user_id = result.getInt("id");
String user_username = result.getString("username");
String user_password = result.getString("password");
user.setId(user_id);
user.setUsername(user_username);
user.setPassword(user_password);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}

return user;
}

@Override
public User get(String username, String password) {
String queryString = "select * from user where username=" + username
+ " and password=" + password;
Connection conn;
User user = new User();
if ((conn = getConnection()) == null)
return null;
try {
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery(queryString);
while (result.next()) {
Integer user_id = result.getInt("id");
String user_username = result.getString("username");
String user_password = result.getString("password");
user.setId(user_id);
user.setUsername(user_username);
user.setPassword(user_password);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}

return user;
}

@Override
public List<User> getAll() {
// TODO Auto-generated method stub
String queryString = "select * from user";
Connection conn;
List<User> list = new ArrayList<User>();
if ((conn = getConnection()) == null)
return null;
try {
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery(queryString);
while (result.next()) {
User user = new User();
Integer user_id = result.getInt("id");
String user_username = result.getString("username");
String user_password = result.getString("password");
user.setId(user_id);
user.setUsername(user_username);
user.setPassword(user_password);
list.add(user);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return list;
}

return list;
}

@Override
public void save(User user) {
// TODO Auto-generated method stub
String queryString = "insert into user (username,password) values ('"
+ user.getUsername() + "','" + user.getPassword() + "')";
Connection conn;
List<User> list = new ArrayList<User>();
if ((conn = getConnection()) == null)
return;

Statement stmt;
try {
stmt = conn.createStatement();
stmt.execute(queryString);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

@Override
public void update(User user) {
// TODO Auto-generated method stub
String queryString = "update  user set username='"+user.getUsername()+"'," +
"password'"+user.getPassword()+"'wherer id="+user.getId();
Connection conn;
List<User> list = new ArrayList<User>();
if ((conn = getConnection()) == null)
return;

Statement stmt;
try {
stmt = conn.createStatement();
stmt.execute(queryString);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

测试类
package com.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

import com.manager.UserDao;
import com.manager.UserManager;
import com.model.User;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String dirverName="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost/sample";
        String username="root";
        String password="lilonglai";
        UserManager userManager = new UserDao(dirverName,url,username,password);
        List list=userManager.getAll();
        int i=0;
        while(i<list.size()){
        User user=(User)list.get(i);
        System.out.print("id:"+user.getId());
        System.out.print("  username:"+user.getUsername());
        System.out.println("   password:"+user.getPassword());
        i++;
        }
       
}
}


这样就完成了从数据库到Java类的转换,这大概也是hibernate的操作方法。
0
0
分享到:
评论

相关推荐

    java程序是怎么操作数据库的,可以以常用据库为例,求详细解答,最好能举例。

    Run Anywhere)、优秀的图像处理能力(我相信现在没有那种语言可以超过JAVA在网络上的图形处理能力)、网络通信功能、通过JDBC数据库访问技术等等,让我们谁都不可否认JAVA语言是SUN公司对于计算机界的一个巨大的贡献...

    java开源包4

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    Java语言基础下载

    通过JAVA写数据到XML里面 415 内容总结 418 独立实践 418 第二十三章:HTML基础 419 学习目标 419 知识要点 420 HTML元素 420 标签属性 420 HTML基本标签 422 标题元素 422 HTML格式 427 HTML实体 431 不可拆分的...

    java开源包3

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    Java开发详解.zip

    031704_【第17章:Java数据库编程】_JDBC操作步骤及数据库连接操作笔记.pdf 031705_【第17章:Java数据库编程】_执行数据库更新操作笔记.pdf 031706_【第17章:Java数据库编程】_ResultSet接口笔记.pdf 031707_【第...

    java开源包11

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包6

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包101

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包9

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包8

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包5

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包10

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    hibernate中文帮助文档html

    还有pdf教程。 在今日的企业环境中,把面向对象的软件和关系数据库一起使用...不管怎样,Hibernate一定可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。

    Hibernate3.0中文手册.rar

    不管怎样,Hibernate一定可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。 &lt;br&gt;如果你对Hibernate和对象/关系数据库映射还是个新手,或者甚至对...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库应用。全书分5篇24章,共计603个实例和603个经验技巧。每个实例都...

    java开源包1

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

Global site tag (gtag.js) - Google Analytics