java接口中实现增删改查 5

在同一个接口中实现增删改查四个功能功能逻辑:1.实现新增功能,但是要保证新增功能添加的东西数据库中不存在insert2.实现查询功能,查询数据库中是否存在该数据,返回该数... 在同一个接口中实现增删改查四个功能
功能逻辑:
1.实现新增功能,但是要保证新增功能添加的东西数据库中不存在 insert
2.实现查询功能,查询数据库中是否存在该数据,返回该数据的值 select
3.实现修改功能,在数据库中有该参数的前提下执行修改功能 update
4.实现删除功能,在数据库中有该参数的前提下将该数据库删除 delete
展开
 我来答
哈尔滨市南岗区爱尚职
2017-05-16 · 做品质教育,用事实说话
哈尔滨市南岗区爱尚职
爱尚实训成立于2010年,总部设立在软件外包名城—大连,并在哈尔滨和沈阳设有分校。爱尚实训专注于IT行业精英的培养,打造高端IT技能实训品牌。
向TA提问
展开全部
UserDao为例:实现类

package aishang.j11;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import aishang.j11.domain.User;

public class UserDao implements IUserDao {
String url = "jdbc:mysql://localhost:3306/mydb";
String dbUser = "root";
String password = "123";

//1.插入用户
public int add(User user){
Connection conn = null;
PreparedStatement ps = null;
int res = 0;

try {
//3.加载驱动
Class.forName("com.mysql.jdbc.Driver");

//4.创建一个连接
conn = DriverManager.getConnection(url, dbUser, password);

//5.创建一个PreparedStatement对象,进行SQL预处理
//?是一个占位符,在代码执行的过程中,会用变量来代替?占位符
String sql = "insert into user0508 values(default,?,?,?)";
ps = conn.prepareStatement(sql);

//6.将上一步的问号,用实际的值来代替,
//注意:数据库中的字段是varchar(setString),int(setInt)
//    set方法,第一个参数要指明?所在sql中的序号,?从1开始计数的,第二个参数,就是实际要赋的值
ps.setString(1,user.getUsername());
ps.setString(2, user.getPassword());
ps.setInt(3, user.getAge());

//7.执行sql语句
res = ps.executeUpdate();
//System.out.println("操作成功!");
} catch (ClassNotFoundException e) {
// 1.mysql的jar包没有导入
// 2.上面的注册类,写错
//e.printStackTrace();
System.out.println("注册驱动失败!");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("连接创建失败!");
} finally{
//资源回收,后建立的资源先回收
try {
if(ps!=null){
    ps.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return res;
}

//2.修改用户
public void update(User user){
Connection conn = null;
PreparedStatement ps = null;

try {
//3.加载驱动
Class.forName("com.mysql.jdbc.Driver");

//4.创建一个连接
conn = DriverManager.getConnection(url, dbUser, password);

//5.创建一个PreparedStatement对象,进行SQL预处理
//?是一个占位符,在代码执行的过程中,会用变量来代替?占位符
String sql = "update user0508 set username=?,password=?,age=? where id=?";
ps = conn.prepareStatement(sql);

//6.将上一步的问号,用实际的值来代替,
//注意:数据库中的字段是varchar(setString),int(setInt)
//    set方法,第一个参数要指明?所在sql中的序号,?从1开始计数的,第二个参数,就是实际要赋的值
ps.setString(1,user.getUsername());
ps.setString(2, user.getPassword());
ps.setInt(3, user.getAge());
ps.setInt(4, user.getId());

//7.执行sql语句
ps.executeUpdate();
System.out.println("操作成功!");
} catch (ClassNotFoundException e) {
// 1.mysql的jar包没有导入
// 2.上面的注册类,写错
//e.printStackTrace();
System.out.println("注册驱动失败!");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("连接创建失败!");
} finally{
//资源回收,后建立的资源先回收
try {
if(ps!=null){
    ps.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

//3.删除用户
public void delete(User user){
Connection conn = null;
PreparedStatement ps = null;

try {
//3.加载驱动
Class.forName("com.mysql.jdbc.Driver");

//4.创建一个连接
conn = DriverManager.getConnection(url, dbUser, password);

//5.创建一个PreparedStatement对象,进行SQL预处理
//?是一个占位符,在代码执行的过程中,会用变量来代替?占位符
String sql = "delete * from  user0508 where id=?";
ps = conn.prepareStatement(sql);

//6.将上一步的问号,用实际的值来代替,
//注意:数据库中的字段是varchar(setString),int(setInt)
//    set方法,第一个参数要指明?所在sql中的序号,?从1开始计数的,第二个参数,就是实际要赋的值
ps.setInt(1, user.getId());

//7.执行sql语句
ps.executeUpdate();
System.out.println("操作成功!");
} catch (ClassNotFoundException e) {
// 1.mysql的jar包没有导入
// 2.上面的注册类,写错
//e.printStackTrace();
System.out.println("注册驱动失败!");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("连接创建失败!");
} finally{
//资源回收,后建立的资源先回收
try {
if(ps!=null){
    ps.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

//4.根据用户名和密码查询用户是否存在
public boolean checkUser(String username,String pass){
boolean flag = false;

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
//向数据库中查询,根据用户名和密码,同时匹配
try {
//2.加载驱动
Class.forName("com.mysql.jdbc.Driver");

//3.产生一个连接
conn = DriverManager.getConnection(url, dbUser, password);

//4.创建PreparedStatement对象
ps = conn.prepareStatement("select * from user0508 where username= ? and password= ?");

//5.给?赋值
ps.setString(1, username);
ps.setString(2, pass);

//6.执行sql语句
rs = ps.executeQuery();

//有记录
if(rs.next()){
flag = true;
}

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//8,关闭资源
try {
if(rs!=null){
   rs.close();
}
if(ps!=null){
ps.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return flag;
}


//5.按照ID查询某一用户
public User findUserByID(int id){
User user = new User();

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
//获取数据

try {
//2.加载驱动
Class.forName("com.mysql.jdbc.Driver");

//3.产生一个连接
conn = DriverManager.getConnection(url, dbUser, password);

//4.创建PreparedStatement对象
ps = conn.prepareStatement("select * from user0508 where id=?");

//5.给?赋值
ps.setInt(1, id);

//6.执行sql语句
rs = ps.executeQuery();

//有记录
if(rs.next()!=false){
//7.从rs集合中取数据,取出来的数据包装到user对象里
  user.setId(rs.getInt(1));   
  user.setUsername(rs.getString(2));
  user.setPassword(rs.getString(3));
  user.setAge(rs.getInt(4));
}

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//8,关闭资源
try {
if(rs!=null){
   rs.close();
}
if(ps!=null){
ps.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return user;
}
//6。查询所有
public List<User> findAll(){
List<User> users = new ArrayList<User>();
//查询
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
//2.加载驱动
Class.forName("com.mysql.jdbc.Driver");

//3.产生一个连接
conn = DriverManager.getConnection(url, dbUser, password);

//4.创建PreparedStatement对象
ps = conn.prepareStatement("select * from user0508");

//5.给?赋值

//6.执行sql语句
rs = ps.executeQuery();
while(rs.next()){
//7.1取数据,封装到User对象里
 User user = new User();
 user.setId(rs.getInt(1));   
 user.setUsername(rs.getString(2));
 user.setPassword(rs.getString(3));
 user.setAge(rs.getInt(4));

//7.2 将User对象加入到集合里users
 users.add(user);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//8,关闭资源
try {
if(rs!=null){
   rs.close();
}
if(ps!=null){
ps.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return users;
}

//7.按照用户名模糊查询
public List<User> findUserByNames(String name){
List<User> users = new ArrayList<User>();
//查询
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
//2.加载驱动
Class.forName("com.mysql.jdbc.Driver");

//3.产生一个连接
conn = DriverManager.getConnection(url, dbUser, password);

//4.创建PreparedStatement对象
ps = conn.prepareStatement("select * from user0508 where username like ?");

//5.给?赋值
ps.setString(1, name);

//6.执行sql语句
rs = ps.executeQuery();
while(rs.next()){
//7.1取数据,封装到User对象里
 User user = new User();
 user.setId(rs.getInt("id"));   
 user.setUsername(rs.getString("username"));
 user.setPassword(rs.getString("password"));
 user.setAge(rs.getInt("age"));

//7.2 将User对象加入到集合里users
 users.add(user);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//8,关闭资源
try {
if(rs!=null){
   rs.close();
}
if(ps!=null){
ps.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return users;
}

}

其中User的实体封装

public class User {

private int id;
private String username;
private String password;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

public void show(){
System.out.println("id:"+this.id);
System.out.println("username:"+this.username);
System.out.println("password:"+this.password);
System.out.println("age:"+this.age);
}
}

可以根据不同的业务需求,调用不同的方法:

比如:修改的时候,先调用查询方法,将用户查询出来,再修改

插入的时候,先查询当前的用户名下,有没有用户,再执行插于逻辑

关键在于,你想怎么组合,那就是service层的事情了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式