针对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数据迁移, ...
随机推荐
- mybatis实战教程三:mybatis和springmvc整合
一.搭建maven环境,引入相关jar 参考demo 二.写web.xml <?xml version="1.0" encoding="UTF-8"?&g ...
- SQL Server中的变更捕获技术--简单部署
------准备------ CREATE DATABASE db_test_cdc ,) ,name )); INSERT INTO t1(name)VALUES('test') ------开始- ...
- 定时任务schedule(quartz)
1, 简介Quartz是一个任务调度框架.核心类:Scheduler :调度器,所有Job的调度都是由它控制;JobDetail :生成Job对象的实例,存储Job对象需要的参数;Job ...
- org.json.JSONObject的optXXX方法
JSONObject有很多optXXX方法,比如optBoolean,optString,optInt.... 他们的意思是:如果这个JSONObject对象,如果有返回这个属性的值,如果没有返回一个 ...
- Unity DoTween 动画使用案例
这边我就直接放一个标准的Dotween动画的使用demo吧. 这个案例满足应该可以完成你所想实现的几乎所有复杂动画. void PlayTween() { //set tween data float ...
- zabbix监控的基础概念、工作原理及架构
一.什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WE ...
- [C#] C# 与 MongoDB 的 CURD
C# 与 MongoDB 的 CURD static void Main(string[] args) { //建立连接 var client = new MongoClient(); //建立数据库 ...
- 部署eolinker开源版接口管理
想找一个API接口管理的软件,为了安全性和扩展性考虑,希望是开源的,而且可以在内网独立部署.网上翻找了资料,经过一份比对之后,最终采用eolinker.过去有使用过RAP,但是感觉界面实在是太丑了. ...
- HttpURLConnection用法
在SDK中的URLConnection链接Servlet的问题 1.URL的请求分类GET和POST GET请求可以获取页面静态的值,参数放URL后,传给Serverlct POST的参数是存放于ht ...
- WebService 的工作原理
Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...