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 ...
随机推荐
- Python Number(数字) Ⅰ
Python Number(数字) Python Number 数据类型http://www.xuanhe.net/用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的 ...
- jquery eq()选择器 语法
jquery eq()选择器 语法 作用::eq() 选择器选取带有指定 index 值的元素.index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1).经常与其他元素/选择器一 ...
- Python3学习笔记(四):序列
一.序列概览 Python 包含6 种内建的序列:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象.这里重点讨论最常用的两种类型:列表和元组. 列表与元组的主要区别在于: ...
- select * from (XXXXX)[字符]——写法解析
步骤:1.先执行括号里的语句:查询 select id from three ,将查询出来的数据作为一个结果集 取名为 a2.然后 再 select * from a 查询a ,将 结果集a 全部查询 ...
- Floating Point Math
Floating Point Math Your language isn't broken, it's doing floating point math. Computers can only n ...
- python相关遗漏知识点补充
python中的相关帮助命令 假设s是一个字符串, 那么dir(s)可以列出字符串对象的所有属性(方法也是函数属性),其中有下划线的部分与类重 载有关,用来表示python实现细节,没有下划线的属性是 ...
- MyBatis框架之mybatis逆向工程自动生成代码
http://www.jb51.net/article/82062.htm Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们 ...
- 你是一直认为 count(1) 比 count(*) 效率高么?
MySQL count(1) 真的比 count(*) 快么? 反正同事们都是这么说的,我也姑且觉得对吧,那么没有自己研究一下究竟?如果我告诉你他们一样,你信么? 有 Where 条件的 count, ...
- 微信小程序的 音频 组件
audio:音频组件, api 接口为 wx.createInnerAudioContext audio 组件的属性: id:类型 字符串 audio 组件的唯一标识 src:类型 字符串 要播放音频 ...
- NDK undefined reference to 'rand'
NDK 编译 结果报错undefined reference to 'rand' 最怪异的是armeabi-v7a armeabi的情况下有问题 但是arm64-v8a编译正常,用网上说的添加头文件s ...