针对Student表的DAO设计实例
完整代码以及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设计实例的更多相关文章
- 走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
原文:走向DBA[MSSQL篇] 针对大表 设计高效的存储过程[原理篇] 附最差性能sql语句进化过程客串 测试的结果在此处 本篇详解一下原理 设计背景 由于历史原因,线上库环境数据量及其庞大,很多千 ...
- Java秒杀简单设计二:数据库表和Dao层设计
Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表 https://www.cnblogs.com/taiguyiba/p/9791431.html ...
- Mysql表的约束设计和关联关系设计
https://blog.csdn.net/u012750578/article/details/15026677 Mysql表的约束设计和关联关系设计 ======================表 ...
- RBAC权限设计实例
http://blog.csdn.net/painsonline/article/details/7183629 实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为 ...
- 表结构中updated_time设计为ON UPDATE CURRENT_TIMESTAMP时,使用过程的一个坑
一.mysql表结构中存在如下设计时 表结构中updated_time设计为ON UPDATE CURRENT_TIMESTAMP时,如下 `updated_time` datetime NOT NU ...
- 最新Dashboard设计实例、技巧和资源集锦,视觉和功能两不误,妥妥的!
Dashboard设计,尽管设计师们叫法各不相同(例如:“数据面板设计”, “控制面板设计”, “仪表盘设计”或“后台界面设计”等等).但,此类设计的最终目都是力求以最直观.最简洁的方式呈现各种信息和 ...
- RBAC权限设计实例(转)
实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台 ...
- Oracle数据库设计实例-实时生产效率系统数据库设计
Oracle数据库设计实例-实时生产效率系统数据库设计 引言 1.1 设计前提 某部门经理要求IT部门设计一个流水线实时生产效率系统,用来统计实时的生产量和效率.流水线有数百条,实时间隔为1min. ...
- Oracle impdp导入数据临时表空间与undo表空间爆满解决实例
Oracle impdp导入数据临时表空间与undo表空间爆满解决实例 [日期:2018-01-24] 来源:Linux社区 作者:rangle [字体:大 中 小] 针对Oracle数据迁移, ...
随机推荐
- np.array转换为list,嵌套的python list转成一个一维的python list
np.array转换为list 1 meitan = shuju.iloc[start:end, 1:2] zhengqi = shuju.iloc[start:end,2:3] print(type ...
- JavaScript基础:BOM的常见内置方法和内置对象
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. BOM的介绍 JavaScript的组成 JavaScript基础分为三 ...
- <global-results>标签来定义全局的<result>
<global-results> <result name="error">/Error.jsp</result> <!-- Ac ...
- NIO笔记---上
小弟前端时间由于开发个管理系统导致断更了近20天!!马上就要春招了,学习了一下NIO,将笔记记录下,希望和我一样的18届毕业生都能找到满意的公司!! 本文记录了NIO与IO的区别,缓冲区的数据存取,直 ...
- malloc,calloc,realloc,alloc
三个函数的申明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(si ...
- 浅谈python模块的导入操作
1.什么是模块 在Python中有一个概念叫做模块(module). 所谓模块,就是将代码量较大的程序分割成多个有组织的,彼此独立但双能互相交互的代码片段, 这些自我包含的有组织的代码段就是模块. 2 ...
- thinkpadE470 win10安装虚拟机时出现‘intel VT-x’处于禁用状态 无法执行64位操作系统
上图为安装虚拟机时弹出的问题. 解决办法: 本人电脑型号为thinkpadE470.遇到此问题查阅了很多,都是针对一般电脑的.折腾了好一会儿.故特写一篇针对此型号的. 1.重启计算机,一开始出现联想标 ...
- 夏令营讲课内容整理 Day 7.
Day7是夏令营的最后一天,这一天主要讲了骗分技巧和往年经典的一些NOIP试题以及比赛策略. 这天有个小插曲,上午的day7T3是一道和树有关的题,我是想破脑袋也想不出来,正解写不出来就写暴力吧,暴力 ...
- 联合查询到gridview
using com.DAL.Base; using DAL.ruanmou; using System; using System.Collections.Generic; using System. ...
- Spring MVC的配置和使用
Spring MVC的配置和使用 笔记仓库:https://github.com/nnngu/LearningNotes Spring MVC需要的jar包 文章中 Spring MVC 使用的版本是 ...