一丶Dao设计模式一些概念
Dao设计模式:
pojo(领域对象层):由普通的Java对象组成;
dao(数据访问层):dao层实现了对数据库的增、删、改、查等原子操作;
业务逻辑层:此层由一系列的业务对象组成,实现了所需要的业务逻辑方法。依赖Dao层实现业务逻辑方法
控制器层:用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用于请求,并根据处理结果转发到不同的表现层组件
表现层:负责收集 用户请求,并显示处理结果
Dao接口:定义表的“增、删、改、查”方法名
Dao接口的实现类:对应接口的实现类,对应JDBC的实现
Service接口:接口,实现业务逻辑,定义实现系统功能的方法名
Service实现类:对应接口的实现类,调用Dao中的方法,外加某些业务逻辑判断
Model:对应数据库表的实体类(属性与表中的字段对应) 表中的列名 必须 和 类的属性名 保持一致
二丶Dao的应用—实际的框架
实体类:(pojo层代码)
package com.iflysse.ceshi.pojo;
public class Users {
private int id;
private String name;
private String account;
private String psw;
private int money;
public Users(){}
public Users(int id, String name, String account, String psw, int money) {
super();
this.id = id;
this.name = name;
this.account = account;
this.psw = psw;
this.money = money;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPsw() {
return psw;
}
public void setPsw(String psw) {
this.psw = psw;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
Dao层接口代码:
package com.iflysse.ceshi.dao;
import java.util.List;
import com.iflysse.ceshi.pojo.Users;
public interface UsersDao {
//注册 向数据库添加一条对象
public void addUsers(Users u);
//登陆 根据账户和密码 查询一天信息 封装成一个对象
public Users login(String account,String psw);
//查询所有 返回一个list集合
public List<Users> getAllUsers();
}
Dao接口实现类的代码:
package com.iflysee.ceshi.dao.impl;
import jdbc_util.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.iflysse.ceshi.dao.UsersDao;
import com.iflysse.ceshi.pojo.Users;
public class UsersDaoImpl implements UsersDao{
private Connection conn = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
@Override
public void addUsers(Users u) {
// TODO Auto-generated method stub
try {
String sql = "insert into userinfo values(null,?,?,?,?)";
conn = JdbcUtil01.getConnection();
ps = conn.prepareStatement(sql);
ps.setString(1, u.getName());
ps.setString(2, u.getAccount());
ps.setString(3, u.getPsw());
ps.setInt(4, u.getMoney());
ps.executeUpdate();
JdbcUtil01.close(conn, ps, rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public Users login(String account, String psw) {
// TODO Auto-generated method stub
Users u = null;
try {
String sql = "select * from userinfo where account = ? and psw = ?";
conn = JdbcUtil01.getConnection();
ps = conn.prepareStatement(sql);
ps.setString(1, account);
ps.setString(2, psw);
rs = ps.executeQuery();
//将结果集封装成一个对象
while(rs.next()){
u = new Users(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JdbcUtil01.close(conn, ps, rs);
return u;
}
@Override
public List<Users> getAllUsers() {
// TODO Auto-generated method stub
List<Users> lst = new ArrayList<Users>();
try {
String sql = "select * from userinfo";
conn = JdbcUtil01.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
Users u = new Users(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5));
lst.add(u);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JdbcUtil01.close(conn, ps, rs);
return lst;
}
}
Service层接口代码:
package com.iflysse.ceshi.service;
import java.util.List;
import com.iflysse.ceshi.pojo.Users;
public interface UsersService {
//注册 向数据库添加一条对象
public void addUsers(Users u);
//登陆 根据账户和密码 查询一天信息 封装成一个对象
public Users login(String account,String psw);
//查询所有 返回一个list集合
public List<Users> getAllUsers();
}
Service层接口实现类的代码:
package com.iflysse.ceshi.service.impl;
import java.util.List;
import com.iflysee.ceshi.dao.impl.UsersDaoImpl;
import com.iflysse.ceshi.dao.UsersDao;
import com.iflysse.ceshi.pojo.Users;
import com.iflysse.ceshi.service.UsersService;
public class UsersServiceImpl implements UsersService{
UsersDao ud = new UsersDaoImpl();
@Override
public void addUsers(Users u) {
// TODO Auto-generated method stub
ud.addUsers(u);
}
@Override
public Users login(String account, String psw) {
// TODO Auto-generated method stub
return ud.login(account, psw);
}
@Override
public List<Users> getAllUsers() {
// TODO Auto-generated method stub
return ud.getAllUsers();
}
}
测试类代码:
package com.iflysse.ceshi.test;
import java.util.List;
import com.iflysse.ceshi.pojo.Users;
import com.iflysse.ceshi.service.UsersService;
import com.iflysse.ceshi.service.impl.UsersServiceImpl;
public class TestMain {
@SuppressWarnings("unused")
public static void main(String[] args) {
Users u = new Users(0, "小花", "621", "456", 3);
UsersService us = new UsersServiceImpl();
//us.addUsers(u);
Users u1 = us.login("6222", "123");
System.out.println(u1.getName());
List<Users> lst = us.getAllUsers();
for(Users ele:lst){
System.out.println(ele.getName()+" 的账户余额为: "+ele.getMoney());
}
}
}
所应用的数据库为: