采用MVC模式JDBC演示案例
MVC三层架构:
Model 模型层,数据处理和业务逻辑
View 视图层,为客户展示内容
Control 控制层,协调控制,更新模型
案例如下:
1、获得数据库连接
package com.db; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; public class JDBCUtil { private static final String URL="jdbc:mysql://127.0.0.1:3306/student";
private static final String USER="root";
private static final String PASSWORD="root";
private static Connection conn = null; static{
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
} public static Connection getConn(){
return conn;
} }
2、创建模型
package com.model; public class Student { private int id;
private String name;
private char sex;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} }
3、创建数据库访问对象--DAO
package com.dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import com.zhidi.db.JDBCUtil;
import com.zhidi.model.Student; public class StuUtile { private static final Connection conn = JDBCUtil.getConn(); //添加
public void addStu(Student stu) throws SQLException{
String sql = "insert into stu"+
"(id,name,sex,age) values (?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, stu.getId());
ps.setString(2, stu.getName());
ps.setString(3,String.valueOf(stu.getSex()));
ps.setInt(4, stu.getAge()); ps.execute(); } //删除
public void delStu(int id) throws SQLException{
String sql = "delete from stu where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,id); ps.execute();
} //修改
public void updateStu(Student stu) throws SQLException{
String sql = "update stu set name=?,sex=?,age=? where "+
"id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, stu.getName());
ps.setString(2,String.valueOf(stu.getSex()));
ps.setInt(3, stu.getAge());
ps.setInt(4, stu.getId()); ps.execute();
} //查询所有学生
public List<Student> query() {
List<Student> list = new ArrayList<Student>();
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from stu"); Student stu = null;
while(rs.next()){
stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
String sex = rs.getString("sex");
char[] ch = sex.toCharArray();
for (char c : ch) {
stu.setSex(c);
}
stu.setAge(rs.getInt("age"));
list.add(stu);
} } catch (SQLException e) {
e.printStackTrace();
} return list;
} //查询单个学生
public Student getStu(int id) throws SQLException{
String sql = "select * from stu where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id); ResultSet rs = ps.executeQuery();
Student stu = null;
while(rs.next()){
stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
String sex = rs.getString("sex");
char[] ch = sex.toCharArray();
for (char c : ch) {
stu.setSex(c);
}
stu.setAge(rs.getInt("age"));
}
return stu;
} }
4、控制层逻辑代码
package com.control; import java.sql.SQLException;
import java.util.List; import com.zhidi.dao.StuUtile;
import com.zhidi.model.Student; public class StuControl { public static void main(String[] args) throws SQLException {
StuUtile su = new StuUtile();
Student stu = new Student();
stu.setId(10);
stu.setName("张芳");
stu.setSex('女');
stu.setAge(20);
// su.addStu(stu); // su.updateStu(stu); // su.delStu(10);
Student s = su.getStu(1);
System.out.println(s.getId()+" "+s.getName()+" "+s.getSex()+" "+s.getAge()); // List<Student> list = su.query();
// for (Student s : list) {
// System.out.println(s.getId()+" "+s.getName()+" "+s.getSex()+" "+s.getAge());
// } } }
采用MVC模式JDBC演示案例的更多相关文章
- iOS架构入门 - MVC模式实例演示
MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能.除此之外,此模式通过对复杂度的简化,使程序结构更加直观 控制器(Controller)-- ...
- 【译】采用MVC模式创建一个简单的javascript App
原文标题:Build A Simple Javascript App The MVC Way 作者:joshcrawmer4 翻译人:huansky 初次翻译,翻译的不好,还请见谅 JavaScrip ...
- MVC模式编程演示样本-登录认证(静态)
好,部分博客分享我的总结JSP-Servlet-JavaBean思想认识和三层编程模型的基本流程,ZH- CNMVC该示例实现演示的编程模式-登录身份验证过程,在这里,我仍在使用静态验证usernam ...
- MVC模式编程演示样例-登录验证(静态)
好,上篇博客分享了本人总结的JSP-Servlet-JavaBean三层架构编程模式的实现思想和基本流程,接下来给大家分享一个MVC编程模式的实现演示样例-登录验证的过程,这里我仍然用的是静态的验证u ...
- 采用MVC模式创建一个简单的javascript App
初次翻译,翻译的不好,还请见谅 JavaScript中最好的一部分之一,也可能是最糟糕的. 在HTML文档的头部添加一个开始和结束脚本标记,并在其中引入一些意大利面条式的代码,毫无疑问这是一种过分简单 ...
- HBASE的Java与Javaweb(采用MVC模式)实现增删改查附带源码
项目文件截图 Java运行截图 package domain; import java.io.IOException; import java.util.ArrayList; import java. ...
- MVC模式:python案例
quotes = ('A man is not complete until he is married. Then he is finished.', 'As I said before, I ne ...
- JavaFX桌面应用-MVC模式开发,“真香”
使用mvc模块开发JavaFX桌面应用在JavaFX系列文章第一篇 JavaFX桌面应用开发-HelloWorld 已经提到过,这里单独整理使用mvc模式开发开发的流程. ~ JavaFX桌面应用开发 ...
- 谈谈JavaScript MVC模式
第一个是:没有使用mvc模式的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
随机推荐
- mybatis 一对一与一对多collection和association的使用
在mybatis如何进行一对一.一对多的多表查询呢?这里用一个简单的例子说明. 一.一对一 1.association association通常用来映射一对一的关系,例如,有个类user,对应的实体 ...
- Leetcode 259. 3Sum Smaller
class Solution(object): def threeSumSmaller(self, nums, target): """ :type nums: List ...
- 【poj3744】 Scout YYF I
http://poj.org/problem?id=3744 (题目链接) 题意 给出n个雷,分别在 a[1]...a[n] ,走一步概率为 p ,走两步概率为 1-p ,一开始在 1 号位置,问安全 ...
- 架构师养成记--12.Concurrent工具类CyclicBarrier和CountDownLatch
java.util.concurrent.CyclicBarrier 一组线程共同等待,直到达到一个公共屏障点. 举个栗子,百米赛跑中,所有运动员都要等其他运动员都准备好后才能一起跑(假如没有发令员) ...
- Bzoj1426 收集邮票
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 292 Solved: 232 Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一 ...
- form表单序列化后的数据转json对象
function formToJson(){ var data = $("#form").serialize(); data= decodeURIComponent(data,tr ...
- linux 下shell中if的“-e,-d,-f”是什么意思
文件表达式-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真-L ...
- js学习篇1--数组
javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...
- RDCMan
Remote Desktop Connection Manager (RDCMan) 是微软Windows Live体验团队的主要开发者 Julian Burger开发的一个远程桌面管理工具.简称为R ...
- Unity3D性能优化
一.美术资源优化 1.动态物体,角色.怪物.NPC (1)控制面的数量,300-2000个 (2)控制Skinner Mesh Renderer的数量,1个 (3)控制材质数量,1-3个 (4)控 ...