首先在数据库创建三个表,分别是:主人表(Master),字段分别是:id、name、password。宠物种类表(pet_type), 字段分别是:id、name。宠物表(pet), 字段分别是:id、master_id、name、type_id、health、love、adopt_time、status。
仅供参考!!!
BaseDao类:
/** * 数据库连接与关闭工具类。 */
public class BaseDao {private static String driver; // 数据库驱动字符串private static String url; // 连接URL字符串private static String user; // 数据库用户名private static String password; // 用户密码Connection conn = null;// 数据连接对象static{//静态代码块,在类加载的时候执行init();}/** * 初始化连接参数,从配置文件里获得 */public static void init(){Properties params=new Properties();String configFile = "database.properties";//配置文件路径//加载配置文件到输入流中InputStream is=BaseDao.class.getClassLoader().getResourceAsStream(configFile);try {//从输入流中读取属性列表params.load(is);} catch (IOException e) {e.printStackTrace();}//根据指定的获取对应的值driver=params.getProperty("driver");url=params.getProperty("url");user=params.getProperty("user");password=params.getProperty("password");}/** * 获取数据库连接对象。 */public Connection getConnection() {if(conn==null){// 获取连接并捕获异常try {Class.forName(driver);conn = DriverManager.getConnection(url, user, password);} catch (Exception e) {e.printStackTrace();// 异常处理}}return conn;// 返回连接对象}/** * 关闭数据库连接。 * @param conn 数据库连接 * @param stmt Statement对象 * @param rs 结果集 */public void closeAll(Connection conn, Statement stmt,ResultSet rs) {// 若结果集对象不为空,则关闭if (rs != null) {try {rs.close();} catch (Exception e) {e.printStackTrace();}}// 若Statement对象不为空,则关闭if (stmt != null) {try {stmt.close();} catch (Exception e) {e.printStackTrace();}}// 若数据库连接对象不为空,则关闭if (conn != null) {try {conn.close();} catch (Exception e) {e.printStackTrace();}}}/** * 增、删、改的操作 * @param sql 预编译的 SQL 语句 * @param param 预编译的 SQL 语句中的‘?’参数的字符串数组 * @return 影响的行数 */public int exceuteUpdate(String preparedSql, Object[] param) {PreparedStatement pstmt = null;int num = 0;conn = getConnection();try {pstmt = conn.prepareStatement(preparedSql);if (param != null) {for (int i = 0; i < param.length; i++) {pstmt.setObject(i + 1, param[i]); // 为预编译sql设置参数}}num = pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();} finally{closeAll(conn, pstmt, null);}return num;} }
Master类:
/** * 宠物主人类。 */ public class Master {private int id;// 主人idprivate String name;// 登录名private String password; // 登录密码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 getPassword() {return password;}public void setPassword(String password) {this.password = password;} }
MasterDao类:
/** * 主人Dao接口。 */ public interface MasterDao {/** * 保存主人信息。 * @param master 主人 */int save(Master master);/** * 删除主人信息。 * @param master 主人 */int del(Master master);/** * 更新主人信息。 * @param master 主人 */int update(Master master);/** * 查找指定登录名和密码的主人 * @param master 要查找的主人 * @return 主人 */Master findMaster(Master master); }
MasterDaoMySQLImpl类:
/** * MasterDao针对MySQL数据库的实现类。 */ public class MasterDaoMySQLImpl extends BaseDao implements MasterDao {@Overridepublic int del(Master master) {// TODO Auto-generated method stubreturn 0;}@Overridepublic int save(Master master) {// TODO Auto-generated method stubreturn 0;}@Overridepublic int update(Master master) {// TODO Auto-generated method stubreturn 0;}@Overridepublic Master findMaster(Master mas) {Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;Master master = null;try {conn = this.getConnection();String sql = "select * from master where name = ? and password=?";pstmt = conn.prepareStatement(sql);pstmt.setString(1, mas.getName());pstmt.setString(2, mas.getPassword());rs = pstmt.executeQuery();if (rs.next()) {master = new Master();master.setId(rs.getInt("id"));master.setName(rs.getString("name"));master.setPassword(rs.getString("password"));}} catch (SQLException e) {e.printStackTrace();} finally {this.closeAll(conn, pstmt, rs);}return master;} }
MasterManager类:
/** * 主人业务类。 */ public class MasterManager {Master master=null; //主人/** * 主人登录。 */public void login() {// 1、获得输入对象Scanner input = new Scanner(System.in);// 2、打印欢迎信息System.out.println("---- 欢迎光临宠物乐园 ----");// 3、获取用户输入的登录名、密码System.out.print("请输入登录名:");String loginId = input.next();System.out.print("请输入密码:");String password = input.next();Master mas = new Master();mas.setName(loginId);mas.setPassword(password);// 4、检查登录名、密码是否合法,并输出提示信息MasterDaoMySQLImpl masterDao = new MasterDaoMySQLImpl();master = masterDao.findMaster(mas);if (master!=null) {System.out.println("登录成功!");} else {System.out.println("用户名或密码错误,登录失败!");}} }
Pet类:
/** * 宠物实体类。 */ public class Pet {private int id;// 宠物idprivate int masterId;// 主人idprivate String name;// 昵称private int typeId;// 类型idprivate int health;// 健康值private int love;// 亲密度private Date adoptTime;// 领养时间private String status;// 状态public int getId() {return id;}public void setId(int id) {this.id = id;}public int getMasterId() {return masterId;}public void setMasterId(int masterId) {this.masterId = masterId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getTypeId() {return typeId;}public void setTypeId(int typeId) {this.typeId = typeId;}public int getHealth() {return health;}public void setHealth(int health) {this.health = health;}public int getLove() {return love;}public void setLove(int love) {this.love = love;}public Date getAdoptTime() {return adoptTime;}public void setAdoptTime(Date adoptTime) {this.adoptTime = adoptTime;}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;} }
PetDao类:
/** * 宠物Dao接口。 */ public interface PetDao { /** * 保存宠物。 * @param pet 宠物 */ int save(Pet pet); /** * 删除宠物。 * @param pet 宠物 */ int del(Pet pet); /** * 更新宠物。 * @param pet 宠物 */ 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); }
PetDaoMySQLImpl类:
public class PetDaoMySQLImpl extends BaseDao implements PetDao{public int update(Pet pet) {String sql="update pet set status=9 where id=?";Object[] param={pet.getId()};int result=this.exceuteUpdate(sql, param);return result;}@Overridepublic List<Pet> findByName(String name) {// TODO Auto-generated method stubreturn null;}@Overridepublic Pet getByName(String name) {// TODO Auto-generated method stubreturn null;}@Overridepublic List<Pet> findByType(String type) {// TODO Auto-generated method stubreturn null;}@Overridepublic int save(Pet pet) {// TODO Auto-generated method stubreturn 0;}@Overridepublic int del(Pet pet) {// TODO Auto-generated method stubreturn 0;} }
PetType类:
public class PetType implements Serializable {private static final long serialVersionUID = 25874444741572L;private int id;private String name;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;} }
PetTypeDao类:
public interface PetTypeDao {List<PetType> findPetType(); //查询宠物类型int findIdByTypeName(String name); //根据类型名称查询类型编号int save(PetType petType); }
PetTypeManager类:
public class PetTypeManager {/** * 显示宠物类型 */public void showPetType(){PetTypeDao pTypeDao=new PetTypeMySQLImpl();List<PetType> list=pTypeDao.findPetType();System.out.println("请选择宠物类型:");for(PetType petType:list){System.out.print(petType.getName()+" | ");}System.out.println();}public int findId(String name){PetTypeDao pTypeDao=new PetTypeMySQLImpl();return pTypeDao.findIdByTypeName(name);} }
PetTypeMySQLImpl类:
/** * PetDao针对MySQL数据库的实现类。 */ public class PetTypeMySQLImpl extends BaseDao implements PetTypeDao {@Overridepublic List<PetType> findPetType() {List<PetType> list=new ArrayList<PetType>();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = this.getConnection();String sql = "select * from pet_type";pstmt=conn.prepareStatement(sql);rs = pstmt.executeQuery();while (rs.next()) {PetType petType=new PetType();petType.setId(rs.getInt("id"));petType.setName(rs.getString("name"));list.add(petType);}} catch (SQLException e) {e.printStackTrace();} finally {this.closeAll(conn, pstmt, rs);}return list;}@Overridepublic int findIdByTypeName(String name) {Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;int id=0;try {conn = this.getConnection();String sql="select id from pet_type where name=?";pstmt = conn.prepareStatement(sql);pstmt.setString(1, name);rs = pstmt.executeQuery();if (rs.next()) {id=rs.getInt("id");}} catch (SQLException e) {e.printStackTrace();} finally {this.closeAll(conn, pstmt, rs);}return id;}@Overridepublic int save(PetType petType) {// TODO Auto-generated method stubreturn 0;} }
Test类(测试类):
public class Test {
Master master = null;
public static void main(String[] args) {
Test test = new Test();
test.adoptPet();
}
public void login() {
Scanner input = new Scanner(System.in);
System.out.println("---- 欢迎光临宠物乐园 ----");
System.out.print("请输入登录名:");
String loginId = input.next();
System.out.print("请输入密码:");
String password = input.next();
Master mas=new Master();
mas.setName(loginId);
mas.setPassword(password);
MasterDao masterDao = new MasterDaoMySQLImpl();
master = masterDao.findMaster(mas);
if (master!=null) {
System.out.println("登录成功!");
} else {
System.out.println("用户名或密码错误,登录失败!");
}
}
public void adoptPet() {
Scanner input = new Scanner(System.in);
if(master==null){
login();
adoptPet();
}else{
PetTypeManager petTypeManager=new PetTypeManager();
petTypeManager.showPetType();
String name=input.next().trim();
int typeId=petTypeManager.findId(name);
if(typeId!=0){
System.out.print("请输入宠物昵称:");
String petName = input.next();
Pet pet=new Pet();
pet.setMasterId(master.getId());
pet.setName(petName);
pet.setTypeId(typeId);
PetDao petDao = new PetDaoMySQLImpl();
int result=petDao.save(pet);
if(result!=1)
System.out.println("领养成功!");
}else{
System.out.println("宠物类型有误,领养失败!");
}
}
}
}
相关知识
使用DAO模式开发宠物管理系统
宠物商城+ssm框架+jsp页面+mysql数据库
三层架构和MVC 模式
基于Java+SpringBoot+Mysql宠物领养系统功能设计与实现五
mysql prestatement
“客舱仓鼠乱窜”系旅客私自带上机
《相伴同行[宠物小精灵]》妮可nicole ^第8章^ 最新更新:2016
计算机毕业设计java+ssm宠物论坛信息网站(源码+系统+mysql数据库+Lw文档)
nodejs+vue.js+express宠物用品电子商务购物系统设计与实现
哪些航空公司可以带宠物上机 什么宠物能上飞机怎么收费
网址: Mysql第8章DAO模式上机练习 https://m.mcbbbk.com/newsview206217.html
上一篇: Java上机作业宠物商店 |
下一篇: 外挂傍身造就世界最强 |