java基础笔记(9)
通过JDBC像数据库实现CRUD操作,这里通过一个存储查看人员的案例来了解java是如何通过JDBC实现与数据库的连接,三层结构中的模型层(数据访问),控制层(业务逻辑)、以及视图层(表示层)又是怎么进行一个交互实现业务需求的。
模型层:
package com.jdbc; import java.util.Date; public class laoren {
private Integer id;
private String username;
private Integer sex;
private Integer age;
private String hobby;
private String create_user;
private Date create_date;
private String update_user;
private Date update_date;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getCreate_user() {
return create_user;
}
public void setCreate_user(String create_user) {
this.create_user = create_user;
}
public Date getCreate_date() {
return create_date;
}
public void setCreate_date(Date create_date) {
this.create_date = create_date;
}
public String getUpdate_user() {
return update_user;
}
public void setUpdate_user(String update_user) {
this.update_user = update_user;
}
public Date getUpdate_date() {
return update_date;
}
public void setUpdate_date(Date update_date) {
this.update_date = update_date;
}
@Override
public String toString() {
return "laoren [id=" + id + ", username=" + username + ", sex=" + sex + ", age=" + age + ", hobby=" + hobby
+ ", create_user=" + create_user + ", create_date=" + create_date + ", update_user=" + update_user
+ ", update_date=" + update_date + "]";
} }
模型实现增删查改:
package com.jdbc; import java.sql.Connection;
import java.sql.Date;
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.jdbc.DBUtil; public class laorenDao {
public void addLaoren(laoren l) throws SQLException {
Connection conn = DBUtil.getConnection();
String sql = "insert into laoren "+"(username,sex,age,hobby,create_user,create_date,update_user,update_date)"+
"values(?,?,?,?,?,current_date(),?,current_date())";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, l.getUsername());
ptmt.setLong(2, l.getSex());
ptmt.setLong(3, l.getAge());
ptmt.setString(4, l.getHobby());
ptmt.setString(5, l.getCreate_user());
ptmt.setString(6, l.getUpdate_user());
ptmt.execute();
}
public void delLaoren(Integer id) throws SQLException {
Connection conn = DBUtil.getConnection();
String sql = "delete from laoren "+
" where id = ?";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setLong(1, id);
ptmt.execute();
}
public List<laoren> query() throws SQLException{
Connection conn = DBUtil.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from laoren");
List<laoren> lr = new ArrayList<laoren>();
laoren l = null;
while(rs.next()){
l = new laoren();
l.setUsername(rs.getString("username"));
l.setId(rs.getInt("id"));
l.setAge(rs.getInt("age"));
l.setHobby(rs.getString("hobby"));
l.setCreate_user(rs.getString("create_user"));
l.setCreate_date(rs.getDate("create_date"));
l.setUpdate_user(rs.getString("update_user"));
l.setUpdate_date(rs.getDate("update_date"));
lr.add(l); }
return lr;
}
public laoren getlaoren(Integer id) throws SQLException {
laoren l = null;
Connection conn = DBUtil.getConnection();
String sql = "select * from laoren"+
" where id = ?";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setLong(1, id);
ResultSet rs = ptmt.executeQuery();
while(rs.next()) {
l = new laoren();
l.setId(rs.getInt("id"));
l.setUsername(rs.getString("username"));
l.setAge(rs.getInt("age"));
l.setHobby(rs.getString("hobby"));
l.setCreate_user(rs.getString("create_user"));
l.setCreate_date(rs.getDate("create_date"));
l.setUpdate_user(rs.getString("update_user"));
l.setUpdate_date(rs.getDate("update_date"));
}
return l;
}
public laoren getlaoren(String username) throws SQLException {
laoren l = null;
Connection conn = DBUtil.getConnection();
String sql = "select * from laoren"+
" where username = ?";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, username);
ResultSet rs = ptmt.executeQuery();
while(rs.next()) {
l = new laoren();
l.setId(rs.getInt("id"));
l.setUsername(rs.getString("username"));
l.setAge(rs.getInt("age"));
l.setHobby(rs.getString("hobby"));
l.setCreate_user(rs.getString("create_user"));
l.setCreate_date(rs.getDate("create_date"));
l.setUpdate_user(rs.getString("update_user"));
l.setUpdate_date(rs.getDate("update_date"));
}
return l;
}
public void updateLaoren(laoren l) throws SQLException {
Connection conn = DBUtil.getConnection();
String sql = "update laoren "+" set username=?,sex=?,age=?,hobby=?,update_user=?,update_date=current_date()"+
" where id = ?";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, l.getUsername());
ptmt.setLong(2, l.getSex());
ptmt.setLong(3, l.getAge());
ptmt.setString(4, l.getHobby());
ptmt.setString(5, l.getUpdate_user());
ptmt.setLong(6, l.getId());
ptmt.execute();
}
}
注:这里的数据库连接通过一个自定好的数据库工具类来实现:
package com.jdbc; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class DBUtil {
private static final String URL="jdbc:mysql://127.0.0.1:3306/laoguai?useUnicode=true&characterEncoding=utf8";//useUnicode表示允许使用自定义的Unicode,characterEncoding是给定自定义的Unicode是什么
private static final String user="root";
private static final String password="123456";
private static Connection conn = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver");//加载驱动程序
conn = DriverManager.getConnection(URL, user, password);//获得数据库的连接
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() {
return conn;
} }
控制层:
package com.jdbc;
import java.sql.SQLException;
import java.util.List; import com.jdbc.*;
public class laorenCon {
public void add(laoren lr) throws SQLException{
laorenDao dao = new laorenDao();
dao.addLaoren(lr);
}
public void deit(laoren lr) throws SQLException{
laorenDao dao = new laorenDao();
dao.updateLaoren(lr);
}
public void del(Integer id) throws SQLException{
laorenDao dao = new laorenDao();
dao.delLaoren(id);
}
public void read(Integer id) throws SQLException{
laorenDao dao = new laorenDao();
System.out.println(dao.getlaoren(id).toString()); }
public void read(String name) throws SQLException{
laorenDao dao = new laorenDao();
laoren y = dao.getlaoren(name);
System.out.println(y.toString());
}
public void readall() throws SQLException{
laorenDao dao = new laorenDao();
List<laoren> list = dao.query();
for(laoren y:list) {
System.out.println(y.toString());
} } }
视图层;
package com.jdbc; import java.sql.SQLException;
import java.util.Scanner;
import java.util.regex.Pattern; public class view {
private static final String CONTEXT = "欢迎来到功能选择区: \n"+
"下面是功能列表: \n"+
"[MAIN/M]:主菜单 \n"+
"[QUERY/Q]:查看捞人的全部信息 \n"+
"[GET/G]:查看某个捞人的信息(根据id或名字)\n"+
"[ADD/A]添加某个捞人 \n"+
"[UPDATE/U]:更新某个捞人的信息 \n"+
"[DELETE/D]:删除某个捞人的信息 \n"+
"[EXIT/E]:离开 \n"+
"[BREAK/B]:后退,返回功能选择区";
private static final String MAIN = "MAIN";
private static final String QUERY = "QUERY";
private static final String GET = "GET";
private static final String ADD = "ADD";
private static final String UPDATE = "UPDATE";
private static final String DELETE = "DELETE";
private static final String EXIT = "EXIT";
public static void main(String[] args) throws SQLException {
System.out.println(CONTEXT);
Scanner scan = new Scanner(System.in);
laoren lr =new laoren();
laorenCon lc = new laorenCon();
String pren = null;
Integer step = 1;
while(scan.hasNext()) {
String in = scan.next().toString();
if(EXIT.equals(in.toUpperCase())||EXIT.substring(0, 1).equals(in.toUpperCase())) {
System.out.println("您已退出系统");
break;
}else if(QUERY.equals(in.toUpperCase())||QUERY.substring(0, 1).equals(in.toUpperCase())) {
lc.readall();
}else if(MAIN.equals(in.toUpperCase())||MAIN.substring(0, 1).equals(in.toUpperCase())) {
System.out.println(CONTEXT);
pren = null;
step = 1; }else if(GET.equals(in.toUpperCase())||GET.substring(0, 1).equals(in.toUpperCase())||GET.equals(pren)) {
//if(in.matches("\\d+"));
pren = GET;
if(step == 1) { System.out.println("请输入要查询的捞人名字或ID:");
}else if (step == 2) {
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
if( pattern.matcher(in).matches())
lc.read(Integer.valueOf(in));
else {
lc.read(in);
}
}
if(GET.equals(pren)) {
step++;
}
}else if(DELETE.equals(in.toUpperCase())||DELETE.substring(0, 1).equals(in.toUpperCase())||DELETE.equals(pren)) {
//if(in.matches("\\d+"));
pren = DELETE;
if(step == 1) { System.out.println("请输入要删除的捞人的ID:");
}else if (step == 2) {
lc.del(Integer.valueOf(in)); }
if(DELETE.equals(pren)) {
step++;
}
}else if(ADD.equals(in.toUpperCase())||ADD.substring(0, 1).equals(in.toUpperCase())||ADD.equals(pren)) {
pren = ADD;
if(step == 1) {
System.out.println("请输入新增捞人的姓名:"); }else if(step == 2){
lr.setUsername(in);
System.out.println("请输入新增捞人的年龄:");
}else if(step == 3) {
lr.setAge(Integer.valueOf(in));
System.out.println("请输入新增捞人的爱好:");
}else if(step == 4) {
lr.setHobby(in);
System.out.println("请输入新增捞人的性别:");
}else if(step == 5) {
lr.setSex(Integer.valueOf(in));
System.out.println("请问这个捞人的创建人是谁:");
}else if(step == 6) {
lr.setCreate_user(in);
System.out.println("请问这个捞人的更新人是谁:");
}else if(step == 7) {
lr.setUpdate_user(in);
try {
lc.add(lr);
System.out.println("新增捞人成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("新增捞人失败");
}
}
if(ADD.equals(pren)) {
step++;
}
}else if(UPDATE.equals(in.toUpperCase())||UPDATE.substring(0, 1).equals(in.toUpperCase())||UPDATE.equals(pren)) {
pren = UPDATE;
if(step == 1) {
System.out.println("请输入更新捞人的姓名:"); }else if(step == 2){
lr.setUsername(in);
System.out.println("请输入更新捞人的年龄:");
}else if(step == 3) {
lr.setAge(Integer.valueOf(in));
System.out.println("请输入更新捞人的爱好:");
}else if(step == 4) {
lr.setHobby(in);
System.out.println("请输入更新捞人的性别:");
}else if(step == 5) {
lr.setSex(Integer.valueOf(in));
System.out.println("请问更新这个捞人的更新人是谁:");
}else if(step == 6) {
lr.setUpdate_user(in);
System.out.println("请问更新这个捞人ID是多少:");
}else if(step == 7) {
lr.setId(Integer.valueOf(in));
try {
lc.deit(lr);
System.out.println("更新捞人成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("更新捞人失败");
}
}
if(UPDATE.equals(pren)) {
step++;
}
}
else {
System.out.println("您输入的值为:"+in);
} }
}
}
java基础笔记(9)的更多相关文章
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- Java基础笔记1
java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...
- Java基础笔记(一)——JDK、JRE、JVM
JDK.JRE和JVM三者的关系 Java程序执行过程 JVM(java virtual machine) 注:由于各种操作系统(windows.linux等)支持的指令集(二进制可执行代码)不同,程 ...
- Java基础笔记05-06-07-08
五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...
- Java基础笔记-抽象,继承,多态
抽象类: abstract修饰 抽象方法必须定义在抽象类中,抽象类不能创建对象. 在抽象方法中可以不定义抽象方法,作用是:让该类不能建立对象. 特点是: 1.定义在抽象类中 2.方法和类都用abstr ...
- Java基础笔记(一)
本文主要是我在看<疯狂Java讲义>时的读书笔记,阅读的比较仓促,就用 markdown 写了个概要. 第一章 Java概述 Java SE:(Java Platform, Standar ...
- JAVA基础笔记10-11-12-13-14
十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...
随机推荐
- 【NOIP2016提高A组模拟9.15】Osu
题目 分析 考虑二分答案, 二分小数显然是不可取的,那么我们将所有可能的答案求出来,记录在一个数组上,排个序(C++调用函数很容易超时,手打快排,时间复杂度约为\(O(>8*10^7)\),但相 ...
- C#任务调度——LimitedConcurrencyLevelTaskScheduler
这是参考大佬分享的代码写的有问题请提出指正,谢谢. using Serilog; using System; using System.Collections.Generic; using Syste ...
- linux 中统计目录/文件数量
1.查询目录/文件的数量(包括子目录下的文件) [root@small king]# ls -lR|grep "^-"|wc -l 4 注:R代表子目录."^d" ...
- UVa 213 信息解码 (模拟 && 二进制)
题意 :对于下面这个字符串 0,00,01,10,000,001,010,011……. 首先是长度为1的串,然后是长度为2的串,以此类推.不存在全为1的串. 你的任务是编写一个程序.首先输入一个代码头 ...
- MongoClient类
在2.10.0版本中引入了MongoClient类,同时在其API中也说明了Mongo类会在将来的版本中被MongoClient替换(Note: This class has been superse ...
- BZOJ 5028 小z的加油站
bzoj链接 Time limit 10000 ms Memory limit 262144 kB OS Linux 感想 树上动态gcd的第二题也好了. [x] BZOJ 2257 [JSOI200 ...
- springboot集成fastjson
@Configuration @EnableWebMvc public class WebMvcConfigurer extends WebMvcConfigurerAdapter { /** * f ...
- BZOJ 1069 Luogu P4166 最大土地面积 (凸包)
题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=1069 (luogu)https://www.luogu.org/probl ...
- Updatexml函数再mysql中的作用
函数的解释 http://www.blogjava.net/chenpengyi/archive/2006/07/11/57578.html 我的理解就是updatexml函数具有查询功能 并且会再x ...
- PHPStrom 配置DataSource来管理数据库
在使用phpstrom的时候经常会连接数据库,使用phpstrom自带的工具,可以连接到mysql数据库,管理和查看mysql,非常方便 这个连接是官方文档教你如何配置http://www.jetbr ...