java接口中实现增删改查 5
在同一个接口中实现增删改查四个功能功能逻辑:1.实现新增功能,但是要保证新增功能添加的东西数据库中不存在insert2.实现查询功能,查询数据库中是否存在该数据,返回该数...
在同一个接口中实现增删改查四个功能
功能逻辑:
1.实现新增功能,但是要保证新增功能添加的东西数据库中不存在 insert
2.实现查询功能,查询数据库中是否存在该数据,返回该数据的值 select
3.实现修改功能,在数据库中有该参数的前提下执行修改功能 update
4.实现删除功能,在数据库中有该参数的前提下将该数据库删除 delete 展开
功能逻辑:
1.实现新增功能,但是要保证新增功能添加的东西数据库中不存在 insert
2.实现查询功能,查询数据库中是否存在该数据,返回该数据的值 select
3.实现修改功能,在数据库中有该参数的前提下执行修改功能 update
4.实现删除功能,在数据库中有该参数的前提下将该数据库删除 delete 展开
2017-05-16 · 做品质教育,用事实说话
关注
展开全部
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层的事情了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询