完整代码以及junit,mysql--connector包下载地址 : https://github.com/CasterWx/MyStudentDao

表信息:

代码:

dao包----impl包----StudentDAOImpl.java

 package dao.impl;

 import dao.IStudentDAO;
import domain.Student; import java.sql.*;
import java.util.ArrayList;
import java.util.List; public class StudentDAOImpl implements IStudentDAO {
public static Connection connection = null ; public void setConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("连接成功");
}catch (Exception e){
System.out.println("连接失败");
}
try{
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/JavaJDBC","root","root");
}catch (Exception e){
}
} public void shutdownConnection(){
try {
if(connection!=null){
connection.close();
}
}catch (Exception e){
}
}
@Override
public void save(Student student) {
setConnection();
Statement statement = null ;
try {
statement = connection.createStatement();
// sql语句:查询对应id
String sql = "INSERT INTO t_student(id,name,age) VALUES(" + student.getId()+",'"+student.getName()+"',"+student.getAge()+")";
statement.executeUpdate(sql);
}catch (Exception e){
}finally {
try{
if (statement!=null){
statement.close();
}
}catch (Exception e){
}
}
shutdownConnection();
} @Override
public void delete(Student student) {
Long id = student.getId() ;
delete(id);
} @Override
public void delete(Long id) {
setConnection();
Statement statement = null ;
try {
statement = connection.createStatement();
// sql语句:查询对应id
String sql = "DELETE FROM t_student WHERE id="+id;
statement.executeUpdate(sql);
}catch (Exception e){
}finally {
try{
if (statement!=null){
statement.close();
}
}catch (Exception e){
}
}
shutdownConnection();
} @Override
public void update(Long id, Student student) {
setConnection();
Statement statement = null ;
try {
statement = connection.createStatement();
// sql语句:查询对应id
String sql = "UPDATE t_student SET name='"+ student.getName() +"',age="+student.getAge() +" WHERE id="+id;
statement.executeUpdate(sql);
}catch (Exception e){
}finally {
try{
if (statement!=null){
statement.close();
}
}catch (Exception e){
}
} shutdownConnection();
} @Override
public void update(Student student) {
Long id = student.getId() ;
update(id,student);
} @Override
public Student get(Long id) {
setConnection();
Statement statement = null ;
ResultSet resultSet = null ;
Student student = null ;
try {
statement = connection.createStatement();
// sql语句:查询对应id
String sql = "SELECT * FROM t_student where id="+id ;
resultSet = statement.executeQuery(sql);
if(resultSet.next()){
student = new Student() ;
student.setId(resultSet.getLong("id"));
student.setName(resultSet.getString("name"));
student.setAge(resultSet.getLong("age"));
return student ;
}
}catch (Exception e){
}finally {
try{
if (statement!=null){
statement.close();
}
}catch (Exception e){
}finally {
try{
if(resultSet!=null){
resultSet.close();
}
}catch (Exception e){
}
}
}
shutdownConnection();
return null;
} @Override
public ArrayList<Student> list() {
ArrayList<Student> list = new ArrayList<Student>() ;
setConnection();
Statement statement = null ;
ResultSet resultSet = null ;
Student student = null ;
try {
statement = connection.createStatement();
// sql语句:查询对应id
String sql = "SELECT * FROM t_student" ;
resultSet = statement.executeQuery(sql); while(resultSet.next()){
student = new Student() ;
student.setId(resultSet.getLong("id"));
student.setName(resultSet.getString("name"));
student.setAge(resultSet.getLong("age"));
list.add(student) ;
}
return list ;
}catch (Exception e){
}finally {
try{
if (statement!=null){
statement.close();
}
}catch (Exception e){
}finally {
try{
if(resultSet!=null){
resultSet.close();
}
}catch (Exception e){
}
}
}
shutdownConnection();
return list;
} }

dao包----IStudentDAO接口

 package dao;

 import domain.Student;

 import java.util.ArrayList;
import java.util.List; /**
* Student对象的CRUD操作
* */
public interface IStudentDAO {
// ----------------------------------增-------------------------------------------- /**
* 保存学生对象
* @param student
* */
void save(Student student); // ----------------------------------删-------------------------------------------- /**
* 根据删除指定学生
* @param student 学生对象
* */ void delete(Student student) ;
/**
* 根据主键删除指定学生
* @param id 学生对象主键
* */
void delete(Long id) ; // ----------------------------------改--------------------------------------------
/**
* 更新指定学生信息
* @param id 学生对象主键
* @param student 学生对象
* */
void update(Long id,Student student) ;
/**
* 根据主键删除指定学生
* @param student 学生对象
* */
void update(Student student); // ----------------------------------查-------------------------------------------- /**
* 查询指定id的学生对象
* @param id 学生对象主键
* @return Student if id存在,返回Student对象,否则返回null
*/
Student get(Long id) ;
/**
* 查询所有学生对象
* @return 所有学生对象
* */
ArrayList<Student> list() ;
}

domain包-----Student.java

 package domain;

 public class Student {
private long id ;
private String name ;
private long age ;
public void getString(){
System.out.println("Student(id="+id+",name="+name+",age="+age+")");
}
public void setId(long id){
this.id = id ;
}
public void setName(String name){
this.name = name ;
}
public void setAge(long age){
this.age = age ;
} public long getId() {
return id;
} public long getAge() {
return age;
} public String getName() {
return name;
}
}

test包----StudentDAOTest

 package test;

 import dao.IStudentDAO;
import dao.impl.StudentDAOImpl;
import domain.Student;
import org.junit.Test; import java.util.ArrayList;
import java.util.List; public class StudentDAOTest {
IStudentDAO iStudentDAO = new StudentDAOImpl();
@Test
public void testSave() {
Student student = new Student() ;
student.setId(164L);
student.setName("Wber");
student.setAge(100L);
iStudentDAO.save(student);
}
@Test
public void testDelete() {
iStudentDAO.delete(161L);
}
@Test
public void testUpdate() {
Student student = new Student() ;
student.setId(161L);
student.setName("wa");
student.setAge(15L);
iStudentDAO.update(161L,student);
}
@Test
public void testGet() {
iStudentDAO.get(162L).getString();
}
@Test
public void testList() {
ArrayList<Student> list = iStudentDAO.list() ;
for(int i=0;i<list.size();i++){
list.get(i).getString();
}
}
}

针对Student表的DAO设计实例的更多相关文章

  1. 走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串

    原文:走向DBA[MSSQL篇] 针对大表 设计高效的存储过程[原理篇] 附最差性能sql语句进化过程客串 测试的结果在此处 本篇详解一下原理 设计背景 由于历史原因,线上库环境数据量及其庞大,很多千 ...

  2. Java秒杀简单设计二:数据库表和Dao层设计

    Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表  https://www.cnblogs.com/taiguyiba/p/9791431.html ...

  3. Mysql表的约束设计和关联关系设计

    https://blog.csdn.net/u012750578/article/details/15026677 Mysql表的约束设计和关联关系设计 ======================表 ...

  4. RBAC权限设计实例

    http://blog.csdn.net/painsonline/article/details/7183629 实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为 ...

  5. 表结构中updated_time设计为ON UPDATE CURRENT_TIMESTAMP时,使用过程的一个坑

    一.mysql表结构中存在如下设计时 表结构中updated_time设计为ON UPDATE CURRENT_TIMESTAMP时,如下 `updated_time` datetime NOT NU ...

  6. 最新Dashboard设计实例、技巧和资源集锦,视觉和功能两不误,妥妥的!

    Dashboard设计,尽管设计师们叫法各不相同(例如:“数据面板设计”, “控制面板设计”, “仪表盘设计”或“后台界面设计”等等).但,此类设计的最终目都是力求以最直观.最简洁的方式呈现各种信息和 ...

  7. RBAC权限设计实例(转)

    实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台 ...

  8. Oracle数据库设计实例-实时生产效率系统数据库设计

    Oracle数据库设计实例-实时生产效率系统数据库设计 引言 1.1 设计前提 某部门经理要求IT部门设计一个流水线实时生产效率系统,用来统计实时的生产量和效率.流水线有数百条,实时间隔为1min. ...

  9. Oracle impdp导入数据临时表空间与undo表空间爆满解决实例

    Oracle impdp导入数据临时表空间与undo表空间爆满解决实例 [日期:2018-01-24] 来源:Linux社区  作者:rangle [字体:大 中 小]   针对Oracle数据迁移, ...

随机推荐

  1. Java高级工程师——面试总结

    面试技巧 1.背熟你的简历 原因:面试的第一个问题,一般都是让你简单介绍下你自己,或者介绍一下你最近的项目,而一个面试者,如果连自己的简历都无法熟知,对里面提到的项目.技术都无法描述清楚的话,我想没有 ...

  2. scrapy_开发环境

    scrapy开发所具备的环境 IDE         pycharm 数据库           mysql, redis 开发环境       python 3.5

  3. 可等待计时器添加APC测试

    可等待计时器和用户计时器的最大区别在于用户计时器需要在应用程序中使用大量的用户界面基础设施,从而消耗更多的资源.此外,可等待计时器是内核对象,这意味着他们不仅可以在多个线程间共享,而且具备安全性. 用 ...

  4. linkin大话设计模式--适配器模式

    linkin大话设计模式--适配器模式 大家知道,在java中只允许单继承,但是在实际问题中往往都需要多继承,java引入了接口这一概念.(一个类可以实现多个接口) 由于接口中都是抽象方法,那么我们在 ...

  5. SuperMap iClient for JavaScript初入

    SuperMap iClient for JavaScript初入 介绍SuperMap for Js的简单使用. 推荐先看下这篇文档:SuperMap iClient for JavaScript ...

  6. PHP读取XML文件

    xml主键被json取代,大概了解一下就OK了 简要: 加载xml文件:$xml = simplexml_load_file('sa.xml');//$xml是一个对象 读取节点:echo $xml- ...

  7. awk 实用技巧

    awk 用法:awk ' pattern {action} ' 变量名 含义ARGC 命令行变元个数ARGV 命令行变元数组FILENAME 当前输入文件名FNR 当前文件中的记录号FS 输入域分隔符 ...

  8. NodeJs实现他人项目实例

    1.简单实例,参考 https://github.com/alsotang/node-lessons/tree/master/lesson2 2.express一个新项目 ,但出现警告 发现少了nod ...

  9. ATS日志说明

    在ATS日志中我们经常遇到形形色色的缓存结果码,为了更清晰地认识它们,相关资料整理到这里: TCP_HIT 请求对象的一份合法拷贝被缓存,ATS将发送该对象给client TCP_MISS 请求对象未 ...

  10. JS前端验证代码

    手机号码正则表达式验证: function checkPhone(){ var phone = document.getElementById('phone').value; if(!(/^1[345 ...