zoukankan      html  css  js  c++  java
  • 数据访问

    总结

    分层的特点

    每一层都有自己的职责

    上一层不用关心下一层的实现细节,上一层通过下一层提供的对外接口来使用其功能

    上一层调用下一层的功能,下一层不能调用上一层功能

    分层开发的好处:

    各层专注于自己功能的实现,便于提高质量

    便于分工协作,提高开发效率

    便于代码复用

    便于程序扩展

    开始流程:

    1:建立数据库epet,建表;


    2
    :创建实体类,和相应的数据库的表是对应的;com.beiwo.epet.entity 

    例如对应的代码如下:

    package com.yang.epet.entity;

    import java.io.Serializable;

    /**

     *

     * 主人实体类

     * @author yang

     *

     * */

    public class Master implements Serializable {

             /**

     *

     */

    private static final long serialVersionUID = 1L;

    private int id;

             private String loginIn;

             private String password;

    public int getId() {

    return id;

    }

    public void setId(int id) {

    this.id = id;

    }

    public String getLoginIn() {

    return loginIn;

    }

    public void setLoginIn(String loginIn) {

    this.loginIn = loginIn;

    }

    public String getPassword() {

    return password;

    }

    public void setPassword(String password) {

    this.password = password;

    }

             

    }

    3:创建Dao的基类接口类BaseDao;com.beiwo.epet.dao.BaseDao

    例如对应的代码如下:

    package com.yang.epet.dao;

    public interface BaseDao {

    /**

     * 增 删 改的操作

     *update dog set name= ? ,password =?,where id=?

     *@param sql 预编译的sql语句

     *@param 预编译的sql语句中的‘?’参数的字符串数组

     *@return 影响的行数

     *

     * */

    public int executeUpdate(String sql,Object[] param);

    }

    4:创建Dao的实现类BaseDaoImpl;com.beiwo.epet.dao.impl.BaseDaoImpl

    例如对应的代码如下:

    package com.yang.epet.dao.impl;

    import java.sql.Connection;

    import java.sql.PreparedStatement;

    import com.yang.epet.dao.BaseDao;

    import com.yang.epet.util.DBUtils;

    public class BaseDaoImpl implements BaseDao {

    @Override

    public int executeUpdate(String sql, Object[] param) {

    // TODO Auto-generated method stub

    int num=0;

    Connection conn = null;

    PreparedStatement pstmt = null;

    //获取Connection

    try {

    conn = DBUtils.getConn();

    pstmt = conn.prepareStatement(sql);

    if (null !=param) {

    for (int j = 0; j < param.length; j++) {

    pstmt.setObject(j+1, param[j]);

    }

    }

    num= pstmt.executeUpdate();

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }finally{

    DBUtils.closeAll(null, pstmt, conn);

    }

    return num;

    }

    }

    5创建具体表的DaoPetDao;com.beiwo.epet.dao.PetDao

    例如对应的代码如下:

    package com.beiwo.epet.dao;

    import java.util.List;

    import com.beiwo.epet.entity.Pet;

    public interface PetDao extends BaseDao{

    /**

     * 保存宠物

     * @param pet

     * @return

     */

    int save(Pet pet);

    /**

     * 删除宠物

     * @param pet

     * @return

     */

    int del(Pet pet);

    /**

     * 更新宠物

     * @param pet

     * @return

     */

    int update(Pet pet);

    /**

     * 根据宠物的昵称查询

     * @param name

     * @return

     */

    Pet getByName(String name);

    /**

     * 根据宠物的昵称,查询宠物列表

     * @param name

     * @return

     */

    List<Pet> findByName(String name);

    /**

     * 根据宠物的类型,查询宠物列表

     * @param type

     * @return

     */

    List<Pet> findByType(String type);

    }

    6 创具体表的Dao实现类,PetDaoMysqlImpl;com.beiwo.epet.dao.impl.PetDaoMysqlImpl

    例如对应的代码如下:

    package com.beiwo.epet.dao.impl;

    import java.util.List;

    import com.beiwo.epet.dao.PetDao;

    import com.beiwo.epet.entity.Pet;

    public class PetDaoOracleImpl extends BaseDaoImpl implements PetDao{

    @Override

    public int save(Pet pet) {

    return 0;

    }

    @Override

    public int del(Pet pet) {

    return 0;

    }

    @Override

    public int update(Pet pet) {

    String sql="UPDATE pet SET status=0 WHERE id=?";

    Object[] param={pet.getId()};

    int result=this.executeUpdate(sql, param);

    return result;

    }

    @Override

    public Pet getByName(String name) {

    return null;

    }

    @Override

    public List<Pet> findByName(String name) {

    return null;

    }

    @Override

    public List<Pet> findByType(String type) {

    return null;

    }

    }

    7:  创建业务逻辑层的接口类,PetService;com.beiwo.epet.service.PetService

    例如对应的代码如下:

    package com.yang.epet.service;

    public interface PetTypervice {

    /**

     *

     * 显示宠物类型

     * */

    public void showPetTyper();

    /**

     *

     * 根据宠物的名称显示宠物的id

     * @param name

     * @return

     *

     *

     * */

    public int findId(String name);

    }

    8:建业务逻辑层的接口实现类,PetServiceImpl;com.beiwo.epet.service.impl.PetServieImpl

    例如对应的代码如下:

    package com.yang.epet.service.impl;

    import java.util.Scanner;

    import com.yang.epet.dao.MasterDao;

    import com.yang.epet.dao.impl.MasterDaoMySqlImpl;

    import com.yang.epet.entity.Master;

    import com.yang.epet.service.MasterService;

    public class MasterServiceImpl implements MasterService {

    public Master master = null;

    @Override

    public void longin() {

    // TODO Auto-generated method stub

    Scanner scanner = new Scanner(System.in);

    //1.输入用户名

    System.out.println("请输入用户名");

    String loginId = scanner.next();

    //2.输入密码

    System.out.println("请输入密码");

    String password = scanner.next();

    MasterDao masterDao = new MasterDaoMySqlImpl();

    Master master2 = new Master();

    master2.setPassword(loginId);

    master2.setLoginIn(password);

    master = masterDao.finMaster(master2);

    if (null !=master) {

    System.out.println("登录成功");

    }else {

    System.out.println("登录失败");

    }

    }

    @Override

    public boolean longin(Master master) {

    // TODO Auto-generated method stub

    return false;

    }

    }

    9: 创建测试类。

    例如对应的代码如下:

    package com.beiwo.epet.test;

    import java.util.Scanner;

    import org.junit.Test;

    import com.beiwo.epet.entity.Master;

    import com.beiwo.epet.service.MasterService;

    import com.beiwo.epet.service.impl.MasterServiceImpl;

    import com.beiwo.epet.service.impl.MasterServiceImpl2;

    public class TestMasterDao {

    @Test

    public void testLogin(){

    MasterService masterService=new MasterServiceImpl();

    masterService.login();

    }

    @Test

    public void testLogin2(){

    Scanner scanner = new Scanner(System.in);

    // 1.输入用户名

    System.out.println("请输入用户名");

    String loginId = scanner.next();

    // 2.输入密码

    System.out.println("请输入密码");

    String password = scanner.next();

    MasterService masterService=new MasterServiceImpl2();

    Master master=new Master();

    master.setLoginId(loginId);

    master.setPassword(password);

    boolean isLogin=masterService.login(master);

    if(isLogin){

    System.out.println("登陸成功");

    }else{

    System.out.println("登陸失敗");

    }

    }

    }

  • 相关阅读:
    javascsript 去除数组重复数据
    javascript监听事件兼容
    javascript紧接上一张for循环的问题,我自己的理解
    javascript解决for循环中i取值的问题(转载)
    javascript 模仿 html5 placeholder
    javascript构造函数+原形继承+作用域扩充
    css画下图
    jquery商城类封装插件
    JEECG01-开发入门环境搭建成功
    Perl学习笔记(九)--文件(四)
  • 原文地址:https://www.cnblogs.com/ynavigatorqcarsauto/p/6183392.html
Copyright © 2011-2022 走看看