JAVA JDBC初学实战(二)简单项目实战

在简单项目实战之前:

首先了解以下MVC基本架构,它分为以下几个层次

                                                            

 

而本次JDBC实战的简单项目是从下往上搭建的。当然我们不会做的涉及太难的东西,但是整个整体框架还是要深刻地概念,之后在实战的时候才会对每一步的目的有所了解。

环境:

  • JDK1.8
  • 编译器eclipse
  • 数据库mysql

一.创建表

结果:

二.创建model层

⭐数据库连接

1.类文件目录

 

 

import java.sql.*;
public class DBUtil {

	private static final String USER = "root";
	private static final String PASS="root";
	private static final String URL="jdbc:mysql://localhost/fortest";
	
	private static Connection conn = null;
	static
	{
		//1.注册驱动程序
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		//2.连接数据库
		try {
			conn = DriverManager.getConnection(URL,USER,PASS);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	//提供getter方法让外部获取数据库连接
	public static Connection getConnection() {
		return conn;
	}
}

⭐User用户接口

 

?‍表的字段名称

?‍java类目录

?‍User.java里基本字段

	private Integer id;
	private  String username;
	private String mobile;
	private Date create_date;
	private String create_user;

别忘了创建getter setter以及toString 方法方便外部调用

 

 

创建方法

比如addUser

public void addUser(User usr) throws SQLException {
		
		//1.获得数据库连接
		//System.out.println("Connecting to database...");
	   Connection conn = DBUtil.getConnection();
	   
	   String sql = "insert into user" + "(username,mobile,create_date,create_user)" + " values(?,?,current_date(),?)";
	   
	   //2.执行数据库操作
	   PreparedStatement ptmt = conn.prepareStatement(sql);
	   
	   ptmt.setString(1,usr.getUsername());
	   ptmt.setString(2, usr.getMobile());
	   ptmt.setString(3,usr.getCreate_user());
	   
	   ptmt.execute();
	   
	   System.out.println("Successfully add to database!");
	}

而update和delete并没有太多值得提及的东西,可以根据自己的java基础以及对JDBC应用的基本理解自己完成。值得一提的是queryUser方法

我们为了提高灵活性,应该可以根据任意条件查询。因此在这里引入Map<String,Object>

具体实现不难,可以看代码理解

public User queryUser(List<Map<String,Object>> params) throws SQLException {
		
		//System.out.println("Connecting to database...");
		Connection conn = DBUtil.getConnection();
        StringBuilder sb = new StringBuilder();
        sb.append("select * from user where 1=1 ");
        
        
        if(params != null && params.size()>0)
        {
        	for(int i=0;i<params.size();i++)
        	{
        		Map<String,Object>  param = params.get(i);
        		sb.append(" and " + param.get("name")+" " +param.get("rela") + " " + param.get("value"));
        	}
        }
		User usr = null;
	
		PreparedStatement ptmt = conn.prepareStatement(sb.toString());
        ResultSet rs = ptmt.executeQuery();
        while(rs.next())
        {
        	usr = new User();
        	usr.setId(rs.getInt("id"));
        	usr.setUsername(rs.getString("username"));
        	usr.setMobile(rs.getString("mobile"));
        }
        
        //System.out.println("Successfully get the users from database !");
        return usr;
		
	}

显然,只要在某个main函数中这样写

List<Map<String,Object>> params = new ArrayList<Map<String,Object>>();
		      Map<String,Object> param = new HashMap<String,Object>();
		      param.put("name", "username");
		      param.put("rela","=");
		      param.put("value", " '小霞 ' " );
		      params.add(param);
		      User usr = usrDao.queryUser(params);
		      System.out.println(usr.getId() + " " + usr.getUsername());

就能查询到username=“小霞”的用户信息。

 

三.搭建Control层

control层主要供视图层引用,所以实际上只是调用UserDao中的接口就行

  //增
	         public void addUser(User usr) throws SQLException {
	        	 UserDao usrDao = new UserDao();
	        	 usrDao.addUser(usr);
	         }
	         
	         //删
	         public void delUser(Integer id) throws SQLException {
	        	 UserDao usrDao = new UserDao();
	        	 usrDao.delUser(id);
	         }
	         
	         //改
	         public void updateUser(User usr) throws SQLException {
	        	 UserDao usrDao = new UserDao();
	        	 usrDao.updateUser(usr);
	         }
	         
	         
	         //查1
	         public List<User> getAllUser() throws SQLException {
	        	 UserDao usrDao = new UserDao();
	        	 return usrDao.getAllUser();
	         }
	         
	         
	         //查2
	         public User queryUser(List<Map<String,Object>> params) throws SQLException {
	        	 UserDao usrDao = new UserDao();
	        	 return usrDao.queryUser(params);
	         }

四.搭建View层

view层主要是控制台的输出输入。可以自己实现。

结果:

当然这里面还有许多可以改进的地方,比如对输入不合理值的判断还不够全面,大家可以自己在发现的过程中提出来改进。

完整代码参考:

GitHub:https://github.com/llllllllr/java-learning/tree/master/JDBC/%E9%A1%B9%E7%9B%AE%E4%B8%80

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值