用java的DAO模式实现对一个学生实体的增加,查询操作。

1.建立一个学生实体类 Student.java

 public class Student {
private String sid;
private String sname;
private int age;
private int banji;
private int score; public Student(String sid, String sname, int age, int banji, int score) {
this.sid = sid;
this.sname = sname;
this.age = age;
this.banji = banji;
this.score = score;
} public String getSid() {
return sid;
} public void setSid(String sid) {
this.sid = sid;
} public String getSname() {
return sname;
} public void setSname(String sname) {
this.sname = sname;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public int getBanji() {
return banji;
} public void setBanji(int banji) {
this.banji = banji;
} public int getScore() {
return score;
} public void setScore(int score) {
this.score = score;
} @Override
public String toString() {
return "student [sid=" + sid + ", sname=" + sname + ", age=" + age + ", banji=" + banji + ", score=" + score
+ "]";
} }

2.数据库连接工具类  ConnectionUtil.java

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class ConnectionUtil {
ConnectionUtil(){}
private static Connection con ; static{
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/shiyan";
String username="root";
String password="1234";
con = DriverManager.getConnection(url, username, password);
}catch(Exception ex){
throw new RuntimeException(ex+"数据库连接失败!");
}
} public static Connection getConnection(){
return con;
} /*关闭数据库连接操作*/
public static void close(Connection con,Statement stat , ResultSet rs){
if(rs!=null){
try{
rs.close();
}catch(SQLException ex){}
} if(stat!=null){
try{
stat.close();
}catch(SQLException ex){}
} if(con!=null){
try{
con.close();
}catch(SQLException ex){}
} }
}

3.DAO接口 UpdateDao.java

 import java.util.List;

 public interface UpdateDao {

     /*查询所有的学生,返回一个List集合中*/
public List<Student> findAllStudent(); /*增加学生*/
public void addStudent(Student stu); }

4.DAO接口实现类  UpdateDaoImpl.java

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; public class UpdateDaoImpl implements UpdateDao { @Override
public List<Student> findAllStudent() { List<Student> list = new ArrayList<Student>(); Connection conn = ConnectionUtil.getConnection();
String sql = "select * from student";
PreparedStatement pst;
try {
pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery(); while (rs.next()) {
Student s = new Student(rs.getString("sid"), rs.getString("sname"), rs.getInt("age"),
rs.getInt("banji"), rs.getInt("score"));
list.add(s);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
} @Override
public void addStudent(Student stu) {
Connection conn = ConnectionUtil.getConnection();
try {
String sql = "insert into student values(?,?,?,?,?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, stu.getSid());
pst.setString(2, stu.getSname());
pst.setInt(3, stu.getAge());
pst.setInt(4, stu.getBanji());
pst.setInt(5, stu.getScore()); pst.executeUpdate(); } catch (Exception e) {
e.printStackTrace();
} } }

5.建立一个Junit类进行测试 TestDao.java

 import java.util.List;

 import org.junit.Test;

 import test3001.Student;
import test3001.UpdateDao;
import test3001.UpdateDaoImpl; public class testDao { @Test
/*测试增加学生*/
public void testaddStudent() {
UpdateDao dao = new UpdateDaoImpl();
Student stu=new Student("8","蓝猫",20,2,98);
dao.addStudent(stu);
} @Test
/*测试查询所有学生信息*/
public void testfindAllStudent() {
UpdateDao dao = new UpdateDaoImpl();
List<Student> list = null;
list = dao.findAllStudent();
for (Student stu : list) {
System.out.println(stu);
}
}
}

-----------泛型DAO是什么鬼 -_-      ---------------------------

Java的DAO设计模式的更多相关文章

  1. java之 ------ DAO设计模式的【具体解释】及常见设计模式的【应用】

    DAO Data Access Object(数据訪问接口) 一.场景和问题 在Java程序中.常常须要把数据持久化,也须要获取持久化的数据.可是在进行数据持久化的过程中面临诸多问题(如:数据源 不同 ...

  2. JavaBean中DAO设计模式简介

    一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Ser ...

  3. Java学习之DAO设计模式

    DAO设计模式是一个javaEE里的设计模式,DAO是Data Access Object 数据访问接口. 一个典型的DAO实现有三个组件: 1.一个DAO接口 2.一个DAO接口的具体类: 3.数据 ...

  4. Java Dao设计模式

    一.信息系统的开发架构   客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/S ...

  5. DAO设计模式

    DAO设计模式 DAO设计模式简介: DAO设计模式可以减少代码量,增强程序的可移植性,提高代码的可读性. DAO(数据库操作对象)设计模式是 JavaEE 数据层的操作.主要由五部分组成: 1.数据 ...

  6. JavaWeb技术(二):DAO设计模式

    1. DAO全称:Data Access Object , 数据访问对象.使用DAO设计模式来封装数据持久化层的所有操作(CRUD),使得数据访问逻辑和业务逻辑分离,实现解耦的目的. 2. 典型的DA ...

  7. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户

    1. DAO简介    DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2. DAO各部分详解    DAO设计模式包括5个重要的部分,分别为数据 ...

  9. JavaBean中DAO设计模式介绍(转)

    一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Ser ...

随机推荐

  1. JavaWeb(一)Servlet中乱码解决与转发和重定向的区别

    前言 前面其实已经把Servlet中所有的内容都介绍完了,这篇讲补充一点乱码和重定向与转发之间的区别! 一.request请求参数出现乱码问题 1.1.get请求 1)乱码示例 get请求的参数是在u ...

  2. Ubuntu 16安装GPU版本tensorflow

    pre { direction: ltr; color: rgb(0, 0, 0) } pre.western { font-family: "Liberation Mono", ...

  3. 退出psql时,报psql_history的错

    数据库版本:Enterprisedb 9.2(postgreSQL) 错误如下所示: postgres=# exitcould not save history to file "/opt/ ...

  4. 一个高性能、轻量级的分布式内存队列系统--beanstalk

    Beanstalk是一个高性能.轻量级的.分布式的.内存型的消息队列系统.最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟.其实Beanstalkd是典型的类Mem ...

  5. 实战之elasticsearch集群及filebeat server和logstash server

    author:JevonWei 版权声明:原创作品 实战之elasticsearch集群及filebeat server和logstash server 环境 elasticsearch集群节点环境为 ...

  6. MVC中Controller控制器相关技术

    第6章Controller相关技术 Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并 且负责协调Model与View之间的数椐传递,是ASP.NET MV ...

  7. php 变量 循环关键词以及方法

    <?php/* 多行注释 */常用数据类型int string double/float bool变量的定义$a = 123;$b = "123";$c = '456';$d ...

  8. app启动页问题

    今天自己做的小作品准备提交,就差一个启动页,各种百度,各种搜,结果还好最后终于出来了,和大家分享一下,这个过程中遇到的各种小问题.(注XCode版本为7.2) 1.启动页一般都是图片,因为苹果有4,4 ...

  9. 语音识别完成诗句的查询功能,iOS AVSpeechSynthesis语音输出结果的诗歌APP

    前言 当前的APP的查询都是使用手动输入,不仅效率低,而且查询的语句的限制比较大,不能够方便的扩展. 如果能方便的扩展查询语句,那么APP的使用就会有很大的灵活性.可以设计各种问句和语句,可以方便的和 ...

  10. Linux 进程与信号的概念和操作

    进程 主要参考: http://www.bogotobogo.com/Linux/linux_process_and_signals.php 信号与进程几乎控制了操作系统的每个任务. 在shell中输 ...