完整代码以及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. 玩转 Redis缓存 集群高可用

    转自:https://segmentfault.com/a/1190000008432854 Redis作为主流nosql,在高并发使用场景中都会涉及到集群和高可用的问题,有几种持久化?场景下的缓存策 ...

  2. python 程序退出方式

    sys.exit() 执行该语句会直接退出程序,这也是经常使用的方法,也不需要考虑平台等因素的影响,一般是退出Python程序的首选方法. 该方法中包含一个参数status,默认为0,表示正常退出,也 ...

  3. PID算法笔记2

    总所周知,PID算法是个很经典的东西.而做自平衡小车,飞行器PID是一个必须翻过的坎.因此本节我们来好好讲解一下PID,根据我在学习中的体会,力求通俗易懂.并举出PID的形象例子来帮助理解PID.一. ...

  4. python3 第五章 - 什么是变量、运算符、表达式

    在读这一章时,运算符的内容比较多,不要去死记.现在记不住也没有关系,现在只要有这个印象.在后面的学习中,会慢慢加深理解,在理解中去记就容易得多了 1.变量 什么是变量?通俗的讲,就是存储在内存中可以变 ...

  5. Django 中 makemigrations、migrate时 No changes detected

    Django创建的项目中,需要更改.增加.删除表中的某些属性,性急直接把之前数据库表删除了,之后再执行: python manage.py makemigrations python manage.p ...

  6. Linux普通用户修改owner非本人文件为什么成功

    关键字:错误提示:E45 已设定选项’readonly’(请加!强制执行) Linux对文件和目录有很好的权限管理,但今天遇到一个比较诡异的事情,普通用户对文件权限不可写,但可以强制保存该文件,这样就 ...

  7. java里程碑之泛型--泛型注意的几点

    1,泛型的基本语法:类名<具体类> 对象名 = new 类名<具体类>().类型参数规范如下: 1),K键,比如映射的键,key的类型 2),V值,比如Map的值,value类 ...

  8. 【转】软件开发工具介绍之 6.Web开发工具

    [本文转自http://www.cnblogs.com/dusonchen/archive/2011/02/09/1739087.html ] 1.EditPlus 无论是编写xhtml页面,还是cs ...

  9. SQL语句-create语句

    SQL语法基础 Create database语句 Create database语句是在MySQL实例上创建一个指定名称的数据 库,create schema语句的语义和create databas ...

  10. JFinal源码 分析之 Core包分析

    ActionHandler.java 这个类继承了上面 说的Handler类,首先我们 上 几个属性 ,下面几个 属性我们 需要 关心哪些东西 呢?首先 是ActionMapping和RenderMa ...