Jdbc练习基础小项目--对个人信息的展示以及增删改查--mvc架构

mvc架构:数据库》》》》创建数据库的映射》》》模型层》》》》控制层》》》》视图层(控制台)

第一步:在数据库中创建一个个人信息表,此步省略



   第二步:创建数据库的映射,代码如下:

public class god {
	private int id;
	private String user_name;
	private int  sex;
	private int age;
	private Date birthday;
	private String  email;
	private String  mobile;
	private String  create_user;
	private String  update_user;
	private Date create_date;
	private Date  update_date;
	private int isdel;	
	public god( int id,String user_name, int sex, int age, Date birthday,
			String email, String mobile, String create_user,
			String update_user, int isdel) {
		super();
		this.id=id;
		this.user_name = user_name;
		this.sex = sex;
		this.age = age;
		this.birthday = birthday;
		this.email = email;
		this.mobile = mobile;
		this.create_user = create_user;
		this.update_user = update_user;
		
		this.isdel = isdel;
	}
	
	public god(){
		
		
	}

	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	public String getUser_name() {
		return user_name;
	}
	
	public void setUser_name(String user_name) {
		this.user_name = user_name;
	}
	
	public int getSex() {
		return sex;
	}
	
	public void setSex(int sex) {
		this.sex = sex;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	public Date getBirthday() {
		return birthday;
	}	
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}	
	public String getEmail() {
		return email;
	}	
	public void setEmail(String email) {
		this.email = email;
	}
	
	public String getMobile() {
		return mobile;
	}
	
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}	
	public String getCreate_user() {
		return create_user;
	}	
	public void setCreate_user(String create_user) {
		this.create_user = create_user;
	}	
	public String getUpdate_user() {
		return update_user;
	}
	
	public void setUpdate_user(String update_user) {
		this.update_user = update_user;
	}
	public Date  getCreate_date() {
		return create_date;
	}
	
	public void setCreate_date(Date create_date) {
		this.create_date = create_date;
	}
	
	public Date getUpdate_date() {
		return update_date;
	}
	
	public void setUpdate_date(Date update_date) {
		this.update_date = update_date;
	}
	
	public int getIsdel() {
		return isdel;
	}	
	public void setIsdel(int isdel) {
		this.isdel = isdel;
	}	
}
第三步:模型层,分为两个类

a.第一个连接类,获取数据库的连接,代码如下:

public class connection {	
	private static final String url="jdbc:mysql://localhost:3306/test";
	private  static final String user="root";
	private  static final String password="";
	private static Connection con=null;
	
	static {
		try{
		//1.加载jdbc驱动	
		Class.forName("com.mysql.jdbc.Driver");
		//2.获取数据库的链接		 
		 con=DriverManager.getConnection(url, user, password);
		}
		catch( Exception e){
			e.printStackTrace();
		}	
	}	
	public Connection getConnection(){
		
		return con;
	}		
	public static void main(String[] args)  throws Exception{
				
		//1.加载jdbc驱动		
			Class.forName("com.mysql.jdbc.Driver");				
		//2.获取数据库的链接			 
			Connection con=DriverManager.getConnection(url, user, password);
			//3.获取Statement对象
			Statement st=con.createStatement();			
		  ResultSet rs=st.executeQuery("select user_name,id,age from  imooc_goddess");		  
		  while(rs.next()){			  
			  System.out.println("名字为:"+rs.getString("user_name"));
		  }
	}	
}

b.第二个类, 提供对数据库增删改查的方法,代码如下(为了方便,在操作时只更改部分的属性值):

public class model {
	
	//模型层写上对数据库的增删改查的方法
//	public void add(god g) throws Exception{
//		//第一步:先获取连接
//		connection c= new connection();
//		Connection  con=  c.getConnection();
//		String sql=""+
//		"insert into imooc_goddess(user_name,sex,age,birthday,email,mobile,create_user,"
//		+ "create_date,update_user,update_date,isdel) values("
//		+ "?,?,?,?,?,?,?,current_date(),?,current_date(),?)";	
//		//预处理
//		java.sql.PreparedStatement pt= con.prepareStatement(sql);
//		//进行传值
//		pt.setString(1, g.getUser_name());
//		pt.setInt(2, g.getSex());
//		pt.setInt(3, g.getAge());
//		pt.setDate(4, new Date(g.getBirthday().getTime()));
//		pt.setString(5, g.getEmail());
//		pt.setString(6, g.getMobile());
//		pt.setString(7, g.getCreate_user());
//		pt.setString(8, g.getUpdate_user());
//		pt.setInt(9, g.getIsdel());
//		//传值后运行
//		pt.execute();
//	}
	public void add(god g) throws Exception{
		//第一步:先获取连接
		connection c= new connection();
		Connection  con=  c.getConnection();
		String sql=""+
		"insert into imooc_goddess(user_name,age) values("
		+ "?,?)";	
		//预处理
		java.sql.PreparedStatement pt= con.prepareStatement(sql);
		//进行传值
		pt.setString(1, g.getUser_name());		
		pt.setInt(2, g.getAge());		
		pt.execute();
	}
	
     public void delete(int id) throws Exception{
    	//第一步:先获取连接
 		connection c= new connection();
 		Connection  con=  c.getConnection();
 		String sql="delete from imooc_goddess  where id=?";		
 		//预处理
 		java.sql.PreparedStatement pt= con.prepareStatement(sql);
 		//传值
 		pt.setInt(1, id);
 		pt.execute();		
	}

     public void update(god g)  throws Exception{
    	 
    	//第一步:先获取连接
 		connection c= new connection();
 		Connection  con=  c.getConnection();
 		String sql=""+
 		"update imooc_goddess  set  user_name=?,age=? where id=?";
 		//预处理
 		java.sql.PreparedStatement pt= con.prepareStatement(sql);
 		//进行传值 		
 		pt.setString(1, g.getUser_name());
// 		pt.setInt(2, g.getSex());
		pt.setInt(2, g.getAge());
// 		System.out.println("???");		
// 		pt.setDate(4, new Date(g.getBirthday().getTime()));
// 		pt.setString(5, g.getEmail());
// 		pt.setString(6, g.getMobile());	
//		pt.setInt(7, g.getIsdel());
 		pt.setInt(3, g.getId()); 
 		//传值后运行
 		pt.execute();    	 	
    }
     
     //查询多个记录,返回他的集合
     public List<god> query() throws Exception{
    	 //获取连接
    	 connection c= new connection();
    	Connection con=c.getConnection();
        Statement st =con.createStatement();
        ResultSet rs=st.executeQuery("select user_name,id,age  from imooc_goddess");
        god g= new god();       
        List<god>  gods= new ArrayList<god>();
        while(rs.next()){
        	g.setUser_name(rs.getString("user_name"));
        	g.setAge(rs.getInt("age"));
        	g.setId(rs.getInt("id"));
        	//添加进集合
        	gods.add(g);
        	//清空对象
        	g=new god();     	
        }
    	 return gods;  	
     }
         
     public List<god> query(List<Map<String, Object>> paramas) throws Exception{
    	 //获取连接
    	 connection c= new connection();
    	Connection con=c.getConnection();
    	//创建一个字符串
    	StringBuilder sb= new StringBuilder();
    	sb.append("select user_name,id,age  from imooc_goddess where 1=1 and  ");
    	//判断如果集合部不为空
    	if(paramas!=null&¶mas.size()>0){
    		
    		for(int i=0;i<paramas.size();i++){
    			
    			Map<String, Object> map=paramas.get(i);
    			//追加sql语句
    			sb.append( "  "+map.get("name")+ " " + map.get("rela")+" "
    					+ map.get("values")+"  "+"or"+" ");      			
    		}  	
    		
    		sb=new StringBuilder(sb.substring(0, sb.lastIndexOf("or")));
    	}   	
        Statement st =con.createStatement();
        ResultSet rs=st.executeQuery(sb.toString());
        god g= new god();       
        List<god>  gods= new ArrayList<god>();
        while(rs.next()){
        	g.setUser_name(rs.getString("user_name"));
        	g.setAge(rs.getInt("age"));
        	g.setId(rs.getInt("id"));
        	//添加进集合
        	gods.add(g);
        	//清空对象
        	g=new god();     	
        }
    	 return gods;  	
     }
     //查询单条记录的方法
     public god get(int id) throws  Exception{
    	 connection c= new connection();
  		Connection  con=  c.getConnection();
  		String sql=" select * from  imooc_goddess where id= ?"; 				
  		//预处理		
  		java.sql.PreparedStatement pt= con.prepareStatement(sql); 	
  		pt.setInt(1, id);	
  		System.out.println(id);
  		//输出id值正常	
    	 god g= new god();
    	 //执行不要在传递参数了   	 
    	 ResultSet rs=pt.executeQuery();     	   	 
    	 while(rs.next()){      		
    		 g.setUser_name(rs.getString("user_name"));
    		 g.setAge(rs.getInt("age"));        	
    	 }  	 
    	 return g;  	 
     }
 
}

  第三步:控制层,代码如下:

//控制层
     public class ControlDemo {
    	 model m= new model();
	//增删改查的方法
    	 public void add(god g) throws Exception{
    		 m.add(g);   		 
    	 }
    	 
    	 public void delete(int id) throws Exception{
    		 m.delete(id);   		 
    	 }
    	 
    	 public void update(god g) throws Exception{
    		 m.update(g);   		 
    	 }
    	 
    	 //查询所有女神的方法
    	 public   void  query() throws Exception{      		 
    		List<god> gods=m.query();
    		 //遍历查询到的女神信息
    		for(god g:gods){
    			System.out.println("查询到的姓名为:"+g.getUser_name());    			
    		}
    	 }
    	 
    	 //根据输入的单个信息进行查询的方法
    	 public void  query(List<Map<String, Object>> paramas) throws Exception{
    		List<god> go=m.query(paramas);
    		 //打印查询到的信息
    		for(god g:go){
    			System.out.println("查询到的姓名为:"+g.getUser_name());   	
    		}
    	 } 	 
    	 //根据id进行查询
    	 public void  get(int id) throws Exception{
    		god g= m.get(id);
    		System.out.println("查询到的姓名为:"+g.getUser_name());    		 
    	 }

}

    第四步:视图层,代码如下(特别注意循环的控制,控制台循环接收用户的输入并保持某个功能块的循环执行):

public class viewDemo {
	  static String  content="-----欢迎进入查询系统--------"
			+ "\r\n1.a增加"
			+ "\r\n2.d删除"
			+ "\r\n3.u改"
			+ "\r\n4.q查询数据库所有的记录"
			+ "\r\n5.i根据id查询单个记录"
			+ "\r\n6.q2根据姓名或者其他信息进行查询"
			+ "\r\n7.qqq退出系统";
	
	static void  show(){
		System.out.println(content);
	}	
	public static void main(String[] args) {
		show();
		god g=new god();
		ControlDemo control= new ControlDemo();
		Scanner sca= new Scanner(System.in);
		System.out.println("请输入功能的选项,按7退出系统");		
		String in=null;
		//创建一个控制步骤的变量和一个记忆变量
		int k=1;
		int k2=1;
		String p="";		
		//开始进入系统,进行循环,重复接受用户的输入信息
		while(sca.hasNext()){
			//如果输入为7,则退出系统			
			in = sca.next();			
			if(in.equals("qqq")){
				System.out.println("系统退出成功!");
				break;				
			}else if(("a".equals(in)||"a".equals(p))&&k<4){				
				p="a";	
				System.out.println(in);
				System.out.println("您选择了增加的方法");
				
				if(k==1){					
					System.out.println("请输入姓名:");	
				}
				if(k==2){				
					System.out.println(in);
					g.setUser_name(in);						
					System.out.println("请输入年龄:");				
				}
                if(k==3){               	              	
                	System.out.println(in);
                	g.setAge(Integer.valueOf(in));					
					System.out.println("信息录入完毕!");	
					try {
						control.add(g);
						g= new god();
						System.out.println("添加成功");
					} catch (Exception e) {
						System.out.println("添加失败");
						e.printStackTrace();						
					}				
				System.out.println("请按非功能按键结束录入");	
				}               
               k++;
			}else  if(in.equals("d")){
				System.out.println("您选择了删除功能");
				System.out.println("请输入想要删除的id");
			    int id=sca.nextInt();
				try {
					System.out.println("正在执行删除功能");
					control.delete(id);
					System.out.println("删除成功");
				} catch (NumberFormatException e) {				
					e.printStackTrace();
				} catch (Exception e) {
					
					e.printStackTrace();
				}				
			}
			else if(in.equals("u")||p.equals("u")){
				p="u";
				System.out.println("您选择了更新的功能");
				if(k2==1){
					System.out.println("请输入您更新的id");					
				}
				if(k2==2){					
					g.setId(Integer.valueOf(in));
					System.out.println("id选择成功,您选择了id为:"+g.getId()+"的记录");
					System.out.println("请输入姓名:");
				}
				if(k2==3){					
				 g.setUser_name(in);	
				 try {				 
					control.update(g);
					g= new god();
					System.out.println("更新记录成功!!");					
				} catch (Exception e) {
					System.out.println("更新记录失败");
					e.printStackTrace();
				}					
				}
				k2++;				
			}
			//返回主菜单的“m”
			else if(in.equals("m")){				
				show();				
			}			
		else{
				System.out.println("您的输入有误,请重新输入");
				}		
		}
	
	}	
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值