JavaWeb Dao层编写实现操作(增删改查)mysql数据库

          

1.首先准备一个JavaBean对象

这里我以User为例:

package Bean;

public class User {
    private Integer Id;
    private String UserName;
    private String PassWord;
    private String Email;

    public User(Integer id, String userName, String passWord, String email) {
        Id = id;
        UserName = userName;
        PassWord = passWord;
        Email = email;
    }

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "Id=" + Id +
                ", UserName='" + UserName + '\'' +
                ", PassWord=" + PassWord +
                ", Email='" + Email + '\'' +
                '}';
    }

    public Integer getId() {
        return Id;
    }

    public void setId(Integer id) {
        Id = id;
    }

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String userName) {
        UserName = userName;
    }

    public String getPassWord() {
        return PassWord;
    }

    public void setPassWord(String passWord) {
        PassWord = passWord;
    }

    public String getEmail() {
        return Email;
    }

    public void setEmail(String email) {
        Email = email;
    }
}

2.编写配置文件

准备配置jdbc.properties文件并编写

url中,3306端口后面那个跟的是要操作的库,我这里是操作的是book库下的users表,固定位到book库。

 

3.导入jar包

所需要jar包有:

4.编写JdbcUtils类(实现获取连接、关闭连接)

package Utils;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class JdbcUtils {

    private static DruidDataSource dataSource;
    static {

        try {
            Properties properties = new Properties();
            //读取配置文件
            InputStream stream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
            properties.load(stream);
            //创建连接池
             dataSource =(DruidDataSource ) DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //获取连接
    public static Connection getConnection(){
        Connection connection =null;
        try {
             connection =  dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    //关闭连接
    public static void close(Connection connection) {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

5.编写BaseDao类实现通用基础操作

package Dao;

import Utils.JdbcUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

public class BaseDao {
    QueryRunner queryRunner = new QueryRunner();

    public int unpdate(String sql,Object...args){
        Connection connection = JdbcUtils.getConnection();
        try {
            return queryRunner.update(connection, sql, args);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.close(connection);
        }
        return -1;
    }

    public <T> T queryForOne(Class<T> type,String sql,Object...args) {
        Connection connection = JdbcUtils.getConnection();
        try {
            return  queryRunner.query(connection,sql,new BeanHandler<T>(type),args);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.close(connection);
        }
        return null;

    }

    public <T> List<T> queryForList(Class<T> type, String sql, Object...args) {
        Connection connection = JdbcUtils.getConnection();
        try {
            return  queryRunner.query(connection,sql,new BeanListHandler<T>(type),args);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.close(connection);
        }
        return null;

    }

    public Object queryForSingleList(String sql,Object...args){
        Connection connection = JdbcUtils.getConnection();
        try {
            return queryRunner.query(sql,new ScalarHandler(),args);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.close(connection);
        }
        return null;
    }
}

6.编写UserDao实现操作数据库中的Users表

package Dao;

import Bean.User;

import java.util.List;

public class UserDao extends BaseDao {
    //增
    public int addUser(User user){
        String sql = "insert into users(`username`,`password`,`email`)values(?,?,?);";
        return update(sql,user.getUserName(),user.getPassWord(),user.getEmail());
    }

    //删
    public int deleteUser(Integer id){
        String sql = "delete from Users where id = ? ";
        return update(sql,id);
    }


    //改
    public int update(User user){
        String sql = "update Users set `UserName`=?,`PassWord`=?,`Email`=? where `id`= ?";
        return update(sql,user.getUserName(),user.getPassWord(),user.getEmail(),user.getId());
    }

    //查
    public User queryById(Integer id){
        String sql = "select `Id`,`UserName`,`Password`,`Email` from Users Where `id` = ?";
        return queryById(id);
    }

    //查多条

    public List<User> queryUsers(){
        String sql = "select `Id`,`UserName`,`Password`,`Email` from Users";
        return queryForList(User.class,sql);
    }

}

 7.测试

以下增删改查我通过单元测试都没问题

package Test;

import Bean.User;
import Dao.UserDao;
import org.junit.Test;

import static org.junit.Assert.*;

public class UserDaoTest {
    private UserDao userDao = new UserDao();
    @Test
    public void addUser() {
        userDao.addUser(new User(null,"喜羊羊","123456","1234@qq.com"));
    }

    @Test
    public void deleteUser() {
        userDao.deleteUser(1);
    }

    @Test
    public void update() {
    }

    @Test
    public void queryById() {
    }

    @Test
    public void queryUsers() {
    }

8.总结

这里只是提供大致思路,具体实现还要看实际项目需求!!!!!!!

 

  • 8
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些关于实现该系统的指导。 首先,需要使用Java语言开发Web应用程序。在Java,可以使用Servlet和JSP等技术来开发Web应用程序。 其次,需要使用MySQL等关系型数据库来存储学生信息。可以使用JDBC技术来连接数据库,并使用SQL语句来进行增删改查操作。 以下是一个简单的示例: 1. 创建一个名为“student”的数据库,并创建一个名为“student_info”的表,包含以下字段:id (主键,自增长)、name、age、gender、department。 2. 在Java,使用JDBC连接数据库: ``` // 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 连接数据库 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "password"); ``` 3. 使用SQL语句进行增删改查操作: ``` // 插入一条数据 String sql = "INSERT INTO student_info(name, age, gender, department) VALUES (?, ?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "张三"); pstmt.setInt(2, 20); pstmt.setString(3, "男"); pstmt.setString(4, "计算机科学"); pstmt.executeUpdate(); // 修改一条数据 String sql = "UPDATE student_info SET age = ? WHERE id = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 21); pstmt.setInt(2, 1); pstmt.executeUpdate(); // 删除一条数据 String sql = "DELETE FROM student_info WHERE id = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 1); pstmt.executeUpdate(); // 查询数据 String sql = "SELECT * FROM student_info WHERE department = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "计算机科学"); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); String gender = rs.getString("gender"); String department = rs.getString("department"); System.out.println(id + ", " + name + ", " + age + ", " + gender + ", " + department); } ``` 4. 在Servlet,处理客户端请求,并调用数据库操作方法: ``` protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); int age = Integer.parseInt(request.getParameter("age")); String gender = request.getParameter("gender"); String department = request.getParameter("department"); // 插入一条数据 StudentDao dao = new StudentDao(); dao.insert(name, age, gender, department); // 返回成功信息 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("添加成功!"); out.close(); } ``` 5. 在JSP,显示学生信息列表: ``` <% StudentDao dao = new StudentDao(); List<Student> list = dao.selectAll(); for (Student student : list) { %> <tr> <td><%=student.getName()%></td> <td><%=student.getAge()%></td> <td><%=student.getGender()%></td> <td><%=student.getDepartment()%></td> </tr> <% } %> ``` 以上是一个简单的学生管理系统的实现过程。当然,为了实现更完善的功能,还需要考虑数据校验、异常处理、分页查询等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值