Java的DAO设计模式
用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设计模式的更多相关文章
- java之 ------ DAO设计模式的【具体解释】及常见设计模式的【应用】
DAO Data Access Object(数据訪问接口) 一.场景和问题 在Java程序中.常常须要把数据持久化,也须要获取持久化的数据.可是在进行数据持久化的过程中面临诸多问题(如:数据源 不同 ...
- JavaBean中DAO设计模式简介
一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Ser ...
- Java学习之DAO设计模式
DAO设计模式是一个javaEE里的设计模式,DAO是Data Access Object 数据访问接口. 一个典型的DAO实现有三个组件: 1.一个DAO接口 2.一个DAO接口的具体类: 3.数据 ...
- Java Dao设计模式
一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/S ...
- DAO设计模式
DAO设计模式 DAO设计模式简介: DAO设计模式可以减少代码量,增强程序的可移植性,提高代码的可读性. DAO(数据库操作对象)设计模式是 JavaEE 数据层的操作.主要由五部分组成: 1.数据 ...
- JavaWeb技术(二):DAO设计模式
1. DAO全称:Data Access Object , 数据访问对象.使用DAO设计模式来封装数据持久化层的所有操作(CRUD),使得数据访问逻辑和业务逻辑分离,实现解耦的目的. 2. 典型的DA ...
- MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户
1. DAO简介 DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2. DAO各部分详解 DAO设计模式包括5个重要的部分,分别为数据 ...
- JavaBean中DAO设计模式介绍(转)
一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Ser ...
随机推荐
- End up with More Teams UVA - 11088
End up with More Teams Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu ...
- NDK各个版本链接
ndk_r15c (July 2017) Windows 32-bit : https://dl.google.com/android/repository/android-ndk-r15c-wind ...
- VB.net DateTimePicker 初始化为空,选择后显示日期
目的:当某记录的日期数据为空的时候,DateTimePicker 不以默认当前时间显示. 优点:避免不规则的时间格式输入:符合平时遇到的时间输入习惯 缺点:设置要代码,没有textbox控件那么方便设 ...
- java中类之间的关系之封装、继承与多态的几个例子
例子1 1.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和测试类.要求: (1)Monkey类中有个public void speak()方法,在speak方法中输出&q ...
- DB2插入数据 sqlcode302 sqlstate22001错误如何解决?
总结:出现这种错误的原因主要是,插入数据时的长度和数据库中定义的长度不匹配或超出限制.
- Python自学笔记-递归函数(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 递归函数 ...
- Maven-环境搭建以及建立Maven项目
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 多的不说,直接开始这章节的主要内容. 1.maven下载地址http://maven.apac ...
- Object类—复写equals方法,hashCode方法,toString方法
Object:所有类的根类. Object是不断抽取而来,具备着所有对象都具备的共性内容. class Person extends Object { private int age; Person( ...
- invalid types 'int[int]' for array subscript// EOF 输入多组数据//如何键盘输入EOF
数组维度搞错了 一次运行,要输入多组数据,直到读至输入文件末尾(EOF)为止 while(scanf("%d %d",&a, &b) != EOF) // 输入结束 ...
- ROS命令
rospack find [package_name]功能:获取软件包的路径 例:运行 rospack find roscpp ,会返回 /opt/ros/indigo/share/roscppros ...