Mybqtis学习(一):入门

一、Mybatis入门准备:

MVC设计模式分层

  1. 创建bean
  2. 创建servlet
  3. 创建service(包括Inter接口和Impl接口实现类)
  4. 创建dao层,负责连接访问数据库

1.1JAVA中Bean是什么?
POJO类:包括私有的属性和必要的方法,以及get/set方法
简单笼统的说就是一个类,一个可复用的类。javaBean在MVC设计模型中是model,又称模型层,在一般的程序中,我们称它为数据层,就是用来设置数据的属性和一些行为,然后我会提供获取属性和设置属性的get/set方法JavaBean是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java类可以通过自身机制发现和操作这些JavaBean 属性。 
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。
  JavaBean可分为两种:一种是有用户界面(UI,User
Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。

1.2创建Bean:
src文件夹下创建com.hzyc.beans包

package com.hzyc.beans;

public class AnimalBeans {
//POJO类:包含[私有]属性和[公开]的get/set方法
	//如果需要使用set存储自定义类,需要重写equals和hashCode方法
	//如果需要对POJO类进行打印输出,重写toString()方法
	private int id;
	private String address;
	private String name;
	private int number;
	private String kind;
	
	//生成一个默认全部属性为参数的构造方法【提供一个默认无参数的构造方法,迁就是用框架】
	public AnimalBeans(int id, String address, String name, int number,
			String kind) {
		super();
		this.id = id;
		this.address = address;
		this.name = name;
		this.number = number;
		this.kind = kind;
	}
	public AnimalBeans(){
		super();
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((address == null) ? 0 : address.hashCode());
		result = prime * result + id;
		result = prime * result + ((kind == null) ? 0 : kind.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + number;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		AnimalBeans other = (AnimalBeans) obj;
		if (address == null) {
			if (other.address != null)
				return false;
		} else if (!address.equals(other.address))
			return false;
		if (id != other.id)
			return false;
		if (kind == null) {
			if (other.kind != null)
				return false;
		} else if (!kind.equals(other.kind))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (number != other.number)
			return false;
		return true;
	}
	@Override
	public String toString() {
		return "AnimalBeans [id=" + id + ", address=" + address + ", name="
				+ name + ", number=" + number + ", kind=" + kind + "]";
	}
	
}

1.3src文件下创建com.hzyc.servelts

package com.hzyc.servlets;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AnimalServlets extends HttpServlet {
	private static final long serialVersionUID = 1L;
   
    public AnimalServlets() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("doPost");
		request.setCharacterEncoding("utf-8");
		/*主要调用[调用对应的service、bean。。。]【业务内容】
		 * 查询所有动物信息。。。
		 * 
		 * 
		 * 增加动物信息。。。。
		 * MVC模式:jsp----view[servlet-controller C] bean --- model
		 * 							|
		 * 						service层	处理业务,写业务逻辑
		 * 							|
		 * 							dao层	负责访问数据库
		 * 
		 * servlet(controller)
		 * 			选择合适的bean去处理(传递)数据
		 * 			调用合适的service去完成业务处理
		 * 			选择合适的视图显示业务处理结果
		 * 
		 * */
	}

}

1.4创建service层:
1.4.1创建AnimalInter接口

package com.hzyc.service;

import java.util.List;

import com.hzyc.beans.AnimalBeans;

public interface AnimalInter {
	//主要的业务功能,只能定义方法,没有具体的实现
	/*
	 * 查询所有动物信息。。。
	 * 
	 * 增加动物性喜。。。
	 * 
	 * */
	public List<AnimalBeans> findAnimal();
	public int addAnimal(AnimalBeans animal);
}

1.4.2创建AniamlImpl接口实现类:

package com.hzyc.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.hzyc.beans.AnimalBeans;
import com.hzyc.dao.JDBCTools;

public class AnimalImpl implements AnimalInter{
	final JDBCTools jdbc=new JDBCTools();
	@Override
	public List<AnimalBeans> findAnimal() {
		// TODO Auto-generated method stub
		ArrayList<Map<String,String>> rslist=jdbc.find("select * from animal");
		List<AnimalBeans> alist=new ArrayList<AnimalBeans>();
		for(Map<String,String> map : rslist){
			AnimalBeans animal = new AnimalBeans();
			animal.setAddress(map.get("address"));
			animal.setId(Integer.parseInt(map.get("id")));
			animal.setKind(map.get("kind"));
			animal.setName("name");
			animal.setNumber(Integer.parseInt(map.get("number")));
			alist.add(animal);
		}
		return alist;
	}

	@Override
	public int addAnimal(AnimalBeans animal) {
		// TODO Auto-generated method stub
		String sql = "insert into animal values('"+animal.getAddress()+"',"+
		animal.getId()+",'"+animal.getKind()+"','"+animal.getName()+"',"+animal.getNumber()+")";
		int num = jdbc.doUpdate(sql);
		return num;
	}
	
}

1.5创建com.hzyc.dao,负责连接访问数据库:

package com.hzyc.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class JDBCTools {
	Connection conn;
	Statement stmt;
	ResultSet rs;
	private String url="jdbc:mysql://localhost:3308/testdb";
	private void connect(){
		try{
		Class.forName("com.mysql.jdbc.Driver");
		conn=DriverManager.getConnection(url,"root","mysql");
		stmt=conn.createStatement();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public int doUpdate(String sql){
		connect();
		int num = 0;
		try{
		num = stmt.executeUpdate(sql);
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			close();
		}
		return num;
	}
	public ArrayList<Map<String,String>> find(String sql){
		connect();
		System.out.println("创建连接成功!!");
		ArrayList<Map<String,String>> rlist=new ArrayList<Map<String,String>>();
		try{
			rs=stmt.executeQuery(sql);
			System.out.println("查询数据成功!!!");
			ResultSetMetaData rsmd =rs.getMetaData();
			while(rs.next()){
				Map<String,String> map=new HashMap<String,String>();
				for(int i=1;i<=rsmd.getColumnCount();i++){
					map.put(rsmd.getColumnName(i), rs.getString(rsmd.getColumnName(i)));
				}
				rlist.add(map);
				System.out.println("添加数据成功!!!");
			}
			
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			close();
		}
		return rlist;
	}

	private void close(){
		try{
			if(conn!=null){
				conn.close();
			}
			if(stmt!=null){
				stmt.close();
			}
			if(rs!=null){
				rs.close();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}
   此种设计模式是*面向对象*的编程模式,将MVC设计模式【jsp-view】中
   的view层级进行划分分成了【controller C】-【service层,处理业务,写
   业务逻辑层】-【dao层,负责访问以及连接数据库】,即面向对象的开发
   模式【bean-model】的模式,这样做可以避免Java代码和SQL语法的耦
   合。
	
	搭建的时候先建立bean【就是一个类,可以复用的类,model,javabean
	就是模型层】,而后建立servlets,在创建service层【通常包含接口和接
	口实现类】,最后在创建dao层【即JDBCTools工具类】。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值