首先在数据库中建好一个表。

然后创建一个MsterDao类的接口

 package com.beiwo.epte.dao;

 import com.beiwo.epte.entity.Master;

 public interface MasterDao extends BaseDao{

     /**
* 保存主人
* @param pet
* @return
*/
int save(Master master); /**
* 删除主人
* @param pet
* @return
*/
int del(Master master); /**
* 更新主人
* @param pet
* @return
*/
int update(Master master); /**
* 根据Master对象进行查询
* @param master
* @return
*/
Master findMaster(Master master); }

然后创建这个MasterDao的实现类

 package com.beiwo.epte.dao.impl;

 import java.sql.Connection;
import java.sql.PreparedStatement; import com.beiwo.epte.dao.MasterDao;
import com.beiwo.epte.entity.Master;
import com.beiwo.epte.util.DBUtils;
import java.sql.ResultSet; public class MasterDaoMySqllmpl extends BaseDaoImpl implements MasterDao { @Override
public int save(Master master) {
// TODO Auto-generated method stub
return 0;
} @Override
public int del(Master master) {
// TODO Auto-generated method stub
return 0;
} @Override
public int update(Master master) {
// TODO Auto-generated method stub
return 0;
} @Override
public Master findMaster(Master master) {
Master master2 = null; Connection connection = null;
PreparedStatement pastmt = null;
ResultSet rSet = null; String sql = "SELECT * FROM master WHERE loginId=? AND password=?"; try {
connection = DBUtils.getConn();
pastmt = connection.prepareStatement(sql);
pastmt.setString(1, master.getLoginId());
pastmt.setString(2, master.getPassword()); rSet = pastmt.executeQuery();
//指针下移
if (rSet.next()) {
master2 = new Master();
master2.setId(rSet.getInt("id"));
master2.setLoginId(rSet.getString("loginId"));
master2.setPassword(rSet.getString("password")); }
} catch (Exception e) {
// TODO: handle exception
} finally {
DBUtils.closeAll(rSet, pastmt, connection); } return master2;
} }

创建Master的实体类

 package com.beiwo.epte.entity;

 import java.io.Serializable;

 public class Master implements Serializable{

     private int id;  //ID
private String loginId;//用户名
private String password;//密码
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} }

数据库的帮助类

 package com.beiwo.epte.util;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ResourceBundle; /**
* 数据库的帮助类
*
* @author beiwo
*
*/
public class DBUtils { private static String driverClass;
private static String url;
private static String user;
private static String password; static{
ResourceBundle rb=ResourceBundle.getBundle("jdbc");
driverClass=rb.getString("driverClass");
url=rb.getString("url");
user=rb.getString("user");
password=rb.getString("password"); try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} public static Connection getConn() throws Exception {
return DriverManager.getConnection(url, user, password);
} public static void closeAll(ResultSet rs,Statement stmt,Connection conn){
//關閉資源
if(null!=rs){
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(null!=stmt){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
} if(null!=conn){
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} }

然后再创建一个接口声明一个登陆的方法

 package com.beiwo.epte.service;

 public interface MsterService {

     //登陆
public void login(); }

然后创建一个实现类来实现以下这个登陆的方法

 package com.beiwo.epte.service.impl;

 import java.util.Scanner;

 import com.beiwo.epte.dao.MasterDao;
import com.beiwo.epte.dao.impl.MasterDaoMySqllmpl;
import com.beiwo.epte.entity.Master;
import com.beiwo.epte.service.MsterService; public class MasterServiceImpl implements MsterService{ Master master = null;
@Override
public void login() { Scanner scanner = new Scanner(System.in); System.out.println("请输入用户名:");
String loginId = scanner.next(); System.out.println("请输入密码:");
String password = scanner.next(); MasterDao masterDao = new MasterDaoMySqllmpl();
Master master2 = new Master();
master2.setLoginId(loginId);
master2.setPassword(password); master=masterDao.findMaster(master2); if (null!=master) {
System.out.println("登陆成功");
} else {
System.out.println("登陆失败");
} }
}

最后创建一个测试类来调用一下这个方法,只要是输入正确都可以登陆成功。

 package com.beiwo.epte.test;

 import org.junit.Test;

 import com.beiwo.epte.service.MsterService;
import com.beiwo.epte.service.impl.MasterServiceImpl; public class TestMasterDao {
@Test
public void testLogin(){
MsterService masterService = new MasterServiceImpl();
masterService.login();//调用登陆的方法 }
}

DAO模式应用实例的更多相关文章

  1. 2、原生jdbc的dao模式

    一.dao模式 (data access object)1.作用:持久层,专门操作数据的层次结构,不掺杂任何的业务和其他内容2.dao组成部分: a.数据库工厂类 b.数据实体类 javabean p ...

  2. Java实验项目六——使用DAO模式实现对职工表的操作

    Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...

  3. 在WildFly中运行多个standalone模式的实例

      WildFly作为一款优秀的EJB容器,其前身为JBoss AS.JBoss作为一款开源的应用服务器,被广泛的应用在各种项目当中.假设我们现在有这样一个项目,他是以standalone的模式运行在 ...

  4. 数据持久化以及DAO模式的简单使用

    持久化:(是将程序中的数据在瞬时状态和持久状态间转换机制)        即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘).持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然 ...

  5. 创建DAO模式的步骤

    1.建立数据库epet 2.创建实体类,和相对应的数据库是对应的 3.创建Dao的基类接口类BaseDao 4.创建Dao的实现类BaseDaoImpl 5.创建具体表的Dao类 6.创建具体表的Da ...

  6. Java笔记——面向接口编程(DAO模式)

    1.DAO模式  DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来.DAO在数据库与业务逻辑(Service)之间.     l  实体域,即操作的对象,例如 ...

  7. Java Dao模式通过JDBC连接数据库的操作

    Java程序访问数据库: 1.获取数据库厂商提供的驱动(jdbc接口的实现类) 如ojdbc14.jar——Oracle数据库驱动jar包 mysql-connector-java-5.1.8-bin ...

  8. jdbc之二:DAO模式

    详细代码请参见 https://code.csdn.net/jediael_lu/daopattern 1.创建Dao接口. package com.ljh.jasonnews.server.dao; ...

  9. java数据库编程之DAO模式

    第八章:DAO模式 8.1:JDBC封装 为了提高代码的维护性和扩展性,我们使用JDBC进行封装数据, 先定义统一的API,将操作数据的代码抽象到接口中,业务逻辑代码只需要调用这些接口的实现类的对象, ...

随机推荐

  1. 根据Request获取客户端IP 内网IP及外网IP

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...

  2. HDU 2222 关键词查找

    题目大意:给出一篇文章,长度最多1000000,若干个关键词,关键词有可能重复.关键词不超过10000,每个关键词不超过50个字符.请问该文章包含多少个关键词. 这是AC自动机的入门题.首先将关键词分 ...

  3. Nginx常用日志分割方法

    方式一: nginx cronolog日志分割配置文档,根据下面方法,每分钟分割一次NGINX访问日志. 1.nginx日志配置 access_log /var/log/nginx/access.lo ...

  4. ses_cations 值顺序

    16个位置的字符所代表的操作依次如下: 1. ALTER 2. AUDIT 3.COMMENT 4.DELETE 5.GRANT 6.INDEX 7.INSERT 8.LOCK 9.RENAME 10 ...

  5. 每天一个 Linux 命令(14):head 命令

    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾. 1.命令格式: hea ...

  6. JS技术大全(防止复制,粘贴等)

    1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <table border oncontextmenu ...

  7. 编译WebRTC遇到的问题总结

    唉,本人下载WebRTC的代码都用了几天,真的是惭愧,本来以为很简单的东西,没想到搞了这么久,在下载的过程中,心里骂了无数遍XXX,这鬼东西咋这么难搞.后来终于搞明白了为啥代码总是下载不了,然后又在心 ...

  8. 前端开发根据url进行页面跳转控制以及实现菜单栏手风琴效果

    html中的元素:<ul id="accordion" class="accordion">  <li class="licss&q ...

  9. 《疯狂Java讲义》(三) ---- JDK&JRE&JVM&CLASSPATH

    JDK: Java SE Development Kit, Java标准版开发包.包括Java编译器,JRE,以及常用的Java类库等. JRE: Java Runtime Environment,运 ...

  10. APNS 服务推送通知

    1. 将app注册notification里面, 并从APNS上获取测试机的deviceToken. - (BOOL)application:(UIApplication *)application ...