JSP爱心宠物诊所系统设计与实现

2 篇文章 0 订阅
1 篇文章 0 订阅

项目名称、背景、功能

 项目名称

“爱心宠物诊所”系统

 开发背景

“爱心”宠物诊所的职员在工作中需要查阅和管理如下信息:诊所的兽医、客户以及客户的宠物。诊所的兽医具有不同的专业特长,例如:有的擅长牙科,有的擅长内科等。诊所的职员使用浏览器访问该系统。客户的每个宠物都具有唯一的名称。

 功能

“爱心”宠物诊所的职员需要使用系统提供的如下功能:
 浏览诊所的兽医以及他们的专业特长;
 浏览宠物的主人(即诊所的客户)的相关信息;
 更新宠物的主人的相关信息;
 向系统中增加一个新客户;
 浏览宠物的相关信息;
 更新宠物的相关信息;
 向系统中增加一个新宠物;
 浏览宠物的访问历史记录;
 向宠物的访问历史记录添加一次访问;
此外,诊所的职员在使用系统提供的上述功能之前需要进行登录。当职员不需要使用系统的上述功能时,也可退出系统。

系统概述

系统思维导图

思维导图

设计模式

MVC框架
JSP实现视图层设计,Servlet实现控制层设计,JavaBean实现模型层设计
M(Model)指数据模型层V(View)指视图层C(Controller)指控制层
使用 MVC 的目的是将 M 和 V 的实现代码分离,使同一个程序可以有不同的表现形式
MVC框架

用户环境

编译器:IntelliJ IDEA
数据库:MySQL
数据库可视化软件:SQLyog
服务器:Tomcat

选用技术

JSP、 JavaBean、 Servlet、 EL表达式、 Bootstrap框架

系统实现

数据库设计

数据库设计

数据库名称:pets

employee:职员表
用户 username varchar (20) ;密码 password varchar(100) ;加密盐 salt char(4)

字段类型约束注释
UsernameVarchar(20)Primary key用户名
PasswordVarchar(100)Not Null密码
SaltChar(4)Not Null加密盐

SQLyog可视化表
职员表

owner:主人信息表
主人编号id int(20);主人姓名name varchar(20);地址 address varchar(255);城市 city varchar(20);电话 tel varchar(20)

字段类型约束注释
Idint(20)Primary key主人编号
NameVarchar(20)Not null姓名
AddressVarchar(255)Not null地址
CityVarchar(20)Not null城市
TelVarchar(20)Not null电话

SQLyog可视化表
主人信息表

vets:兽医信息表
自增id id int(20);兽医名字 name varchar(20);兽医专业 special varchar(20);兽医电话 tel int(20)

字段类型约束注释
Idint(20)Primary key自增id
NameVarchar(20)Not null兽医名字
SpecialVarchar(20)Not null兽医专业
TelInt(20)Not null兽医电话

SQLyog可视化表
兽医信息表

pets:宠物表
宠物编号 id int(20); 名称 name varchar(20);出生日期 date;类型 type varchar(20);主人id ownerId varchar(20);主人名字 ownerName varchar(20)

字段类型约束注释
Idint(20)Primary key宠物编号
NameVarchar(20)Not null名称
DateNot null出生日期
TypeVarchar(20)Not null类型
OwnerIdVarchar(20)Not null主人id
OwnerNameVarchar(20)Not null主人名字

SQLyog可视化表
宠物表

visits:访问表
编号 id int(20); 宠物id petId int(20); 宠物名字 petName varchar(20);访问日期 date ;描述 description varchar(255)

字段类型约束注释
Idint(20)Primary key编号
petIdint(20)Not null宠物id
PetNameVarchar(20)Not null宠物名字
DateNot null时间
DescriptionVarchar(255)Not null描述

SQLyog可视化表
访问表

系统servlet和JSP概览

系统servlet和JSP概览

系统导航栏

代码 运行效果
系统导航栏

导航栏 内联代码片

<body>
        <%--导航栏--%>
        <nav class="navbar navbar-default">
            <div class="container">
                <!-- Brand and toggle get grouped for better mobile display -->
                <div class="navbar-header active">
                    <a class="navbar-brand active" href="${basePath}/home">首页</a>
                </div>

                <!-- Collect the nav links, forms, and other content for toggling -->
                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                    <ul class="nav navbar-nav">
                        <li class=""><a href="${basePath}/vets/list"> 兽医信息 </a></li>
                    </ul>
                    <ul class="nav navbar-nav">
                        <li class=""><a href="${basePath}/pets/list"> 宠物信息 </a></li>
                    </ul>
                    <ul class="nav navbar-nav">
                        <li class=""><a href=""> 今日公告 </a></li>
                    </ul>
                    <ul class="nav navbar-nav">
                        <li class=""><a href=""> 帮助 </a></li>
                    </ul>

                    <ul class="nav navbar-nav navbar-right">
                        <li><a href="${basePath}/loginOut"> 职员:<%=emp.getUsername()%> - 退出 </a></li>

                    </ul>
                    <ul class="nav navbar-nav navbar-right">
                        <li class=""><a href=""> 联系我们 </a></li>
                    </ul>
                </div><!-- /.navbar-collapse -->
            </div><!-- /.container-fluid -->
        </nav>

    </body>

兽医信息页面

兽医信息前端页面代码 运行效果
兽医页面

前端页面代码

兽医信息前端页面 内联代码片

<body>
<jsp:include page="../common/top.jsp"></jsp:include>
<div class="container">

    <h3 style="text-align: center; margin-bottom: 20px">兽医信息列表</h3>
    <div style="margin-bottom: 30px">
        <form class="form-inline left" action="${basePath}/vets/list" method="get">
            <div class="form-group">
                <label for="searchName">姓名:</label>
                <input type="text" class="form-control" id="searchName" placeholder="兽医姓名" name="name">
            </div>
            <div class="form-group">
                <label for="searchNativePlace">专业:</label>
                <input type="text" class="form-control" id="searchNativePlace" placeholder="兽医专业" name="specialties">
            </div>

            <button type="submit" class="btn btn-default">搜索</button>
            <a href="${basePath}/vet/add" class="btn btn-info" style="float: right; margin-right: 10px">添加兽医</a>
        </form>
    </div>
    <table class="table table-bordered">
        <thead>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>专业</th>
            <th>电话</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody>
        <c:forEach items="${page.datas}" var="vet" >
            <tr>
                <td>${vet.id}</td>
                <td>${vet.name}</td>
                <td>${vet.specialties}</td>
                <td>${vet.tel}</td>
                <td>
                    <a class="btn btn-default btn-sm " role="button" href="${basePath}/vet/update?id=${vet.id}">修改</a>
                    <a class="btn btn-default btn-sm " role="button" href="${basePath}/vet/del?id=${vet.id}">删除</a>
                </td>
            </tr>
        </c:forEach>
        </tbody>
    </table>

    <!--分页-->
    <c:set var="searchPath" value="${basePath}/vets/list?name=${param.name}&specialties=${param.specialties}"/>
    <%@include file="/common/page.jsp"%>
</div>
</body>

后端业务逻辑处理代码

后端业务逻辑处理 内联代码片

package petClinic.service;

import petClinic.model.SearchData;
import petClinic.model.Vet;
import petClinic.tool.CommTool;
import petClinic.tool.Page;
import petClinic.utils.JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * 兽医对应的service
 * made by chigua
 */
public class VetService {
    private static VetService VETSERVICE;

    /**
     * 获取单例
     */
    public static synchronized VetService instance() {
        if (VETSERVICE == null) {
            VETSERVICE = new VetService();
        }
        return VETSERVICE;
    }

    /**
     * 搜寻查询的兽医数据
     * @param searchData
     * @return
     */
    public List<Vet> findAllofThis(SearchData searchData) {
        String sql = "select * from `vets` where 1=1 ";
        //判断是否为空
        if (!CommTool.isEmpty(searchData.getName())) {
            sql += "and name like ? ";
        }
        if (!CommTool.isEmpty(searchData.getSpecialties())) {
            sql += "and specialties=? ";
        }

        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        List<Vet> vets = new ArrayList<Vet>();

        try {
            conn = JDBC.getConnection("pets");
            st = conn.prepareStatement(sql);
            int index = 0;
            if (!CommTool.isEmpty(searchData.getName())) {
                sql += "and name like ? ";
                index++;
                st.setString(index, "%" + searchData.getName() + "%");
            }
            if (!CommTool.isEmpty(searchData.getSpecialties())) {
                sql += "and specialties=? ";
                index++;
                st.setString(index, searchData.getSpecialties());
            }

            rs = st.executeQuery();
            while (rs.next()) {
                int id = rs.getInt(1);
                String name = rs.getString(2);
                String specialties = rs.getString(3);
                int tel = rs.getInt(4);

                Vet vet = new Vet(id, name, specialties, tel);
                vets.add(vet);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, rs);
        }
        return vets;
    }

    /**
     * 查找页面的数据
     *
     * @param page
     * @param searchData
     * @return
     */
    public Page<Vet> pageSearch(Page<Vet> page, SearchData searchData) {
        String sql = "select * from `vets` where 1=1 ";
        //判断是否为空
        if (!CommTool.isEmpty(searchData.getName())) {
            sql += "and name like ? ";
        }
        if (!CommTool.isEmpty(searchData.getSpecialties())) {
            sql += "and specialties=? ";
        }

        sql += "limit ?,? ";

        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        List<Vet> vets = new ArrayList<Vet>();

        try {
            conn = JDBC.getConnection("pets");
            st = conn.prepareStatement(sql);
            int index = 0;
            if (!CommTool.isEmpty(searchData.getName())) {
                sql += "and name like ? ";
                index++;
                st.setString(index, "%" + searchData.getName() + "%");
            }
            if (!CommTool.isEmpty(searchData.getSpecialties())) {
                sql += "and specialties=? ";
                index++;
                st.setString(index, searchData.getSpecialties());
            }

            index++;
            st.setInt(index, page.getOffset());
            index++;
            st.setInt(index, page.getLimit());

            rs = st.executeQuery();
            while (rs.next()) {
                int id = rs.getInt(1);
                String name = rs.getString(2);
                String specialties = rs.getString(3);
                int tel = rs.getInt(4);

                Vet vet = new Vet(id, name, specialties, tel);
                vets.add(vet);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, rs);
        }
        page.setDatas(vets);
        return page;
    }

    /**
     * 添加兽医信息
     *
     * @param vet
     * @return
     */
    public int add(Vet vet) {
        Connection conn = null;
        PreparedStatement st = null;
        int i = 0;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "insert into `vets` values (null,?,?,?)";
            st = conn.prepareStatement(sql);
            st.setString(1, vet.getName());
            st.setString(2, vet.getSpecialties());
            st.setInt(3, vet.getTel());
            i = st.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, null);
        }
        return i;
    }

    /**
     * 通过id获取兽医信息
     *
     * @param id
     * @return
     */
    public Vet getById(int id) {
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        Vet vet = null;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "select * from `vets` where `id`=?";
            st = conn.prepareStatement(sql);
            st.setInt(1, id);
            rs = st.executeQuery();
            while (rs.next()) {
                String name = rs.getString(2);
                String specialties = rs.getString(3);
                String tel = rs.getString(4);
                vet = new Vet(id, name, specialties, Integer.parseInt(tel));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, rs);
        }
        return vet;
    }

    /**
     * 修改兽医信息
     *
     * @param vet
     * @return
     */
    public int update(Vet vet) {
        Connection conn = null;
        PreparedStatement st = null;
        int i = 0;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "update `vets` set `name`=?, `specialties`=?, `tel`=? where id=?";
            st = conn.prepareStatement(sql);
            st.setString(1, vet.getName());
            st.setString(2, vet.getSpecialties());
            st.setInt(3, vet.getTel());
            st.setInt(4, vet.getId());
            i = st.executeUpdate();
            if (i > 0) {
                System.out.println("编号" + vet.getId() + "兽医信息修改成功!");
                i = 1;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, null);
        }
        return i;
    }

    /**
     * 兽医信息删除
     *
     * @param id
     */
    public void del(int id) {
        Connection conn = null;
        PreparedStatement st = null;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "delete from `vets` where `id`=?";
            st = conn.prepareStatement(sql);
            st.setInt(1, id);
            int i = st.executeUpdate();
            if (i > 0)
                System.out.println("编号为" + id + "的兽医已删除");

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, null);
        }
    }
}


宠物信息页面

代码 运行效果
宠物页面

前端页面代码

宠物信息 内联代码片

<body>
<jsp:include page="../common/top.jsp"></jsp:include>
<div class="container">

    <h3 style="text-align: center; margin-bottom: 20px">宠物信息列表</h3>
    <div style="margin-bottom: 30px">
        <form class="form-inline left" action="${basePath}/pets/list" method="get">
            <div class="form-group">
                <label for="searchName">宠物名称:</label>
                <input type="text" class="form-control" id="searchName" placeholder="宠物名称" name="name">
            </div>
            <div class="form-group">
                <label for="searchType">宠物类型:</label>
                <%--<input type="text" class="form-control" id="searchType" placeholder="宠物类型" name="type">--%>
                <select class="form-control" name="type" id="searchType">
                    <option value="" selected>请选择宠物类型</option>
                    <option value="秋田">秋田</option>
                    <option value="沙皮">沙皮</option>
                    <option value="赤影">赤影</option>
                    <option value="西施">西施</option>
                    <option value="柴犬">柴犬</option>
                    <option value="巴哥">巴哥</option>
                    <option value="印度犬">印度犬</option>
                    <option value="京巴">京巴</option>
                    <option value="哈士奇">哈士奇</option>
                </select>
            </div>
            <div class="form-group">
                <label for="searchOwnerName">宠物主人:</label>
                <input type="text" class="form-control" id="searchOwnerName" placeholder="宠物主人" name="ownerName">
            </div>

            <button type="submit" class="btn btn-default">搜索</button>
            <a href="${basePath}/pet/add" class="btn btn-info" style="float: right; margin-right: 10px">宠物信息添加</a>
            <a href="${basePath}/owner/add" class="btn btn-info" style="float: right; margin-right: 10px">添加主人信息</a>
        </form>
    </div>
    <table class="table table-bordered" style="text-align: center">
        <thead>
        <tr>
            <th style="text-align: center">ID</th>
            <th style="text-align: center">宠物名称</th>
            <th style="text-align: center">宠物春日期</th>
            <th style="text-align: center">宠物类型</th>
            <th style="text-align: center">宠物主人</th>
            <th style="text-align: center">宠物、宠物主人相关操作</th>
        </tr>
        </thead>
        <tbody>
        <c:forEach items="${page.datas}" var="pet" >
            <tr>
                <td>${pet.id}</td>
                <td>${pet.name}</td>
                <td>${pet.date}</td>
                <td>${pet.type}</td>
                <td>${pet.ownerName}</td>
                <td>
                    <a class="btn btn-default btn-sm " role="button" href="${basePath}/pet/update?id=${pet.id}">修改</a>
                    <a class="btn btn-default btn-sm " role="button" href="${basePath}/pet/del?id=${pet.id}">删除</a>
                    <a class="btn btn-default btn-sm " role="button" href="${basePath}/owner/display?id=${pet.ownerId}">查看主人信息</a>
                    <a class="btn btn-default btn-sm " role="button" href="${basePath}/visit/display?id=${pet.id}">查看宠物历史信息</a>
                    <a class="btn btn-default btn-sm " role="button" href="${basePath}/visit/add?id=${pet.id}&name=${pet.name}">添加宠物浏览信息</a>
                </td>
            </tr>
        </c:forEach>
        </tbody>
    </table>


    <!--分页-->
    <c:set var="searchPath" value="${basePath}/pets/list?name=${param.name}&type=${param.type}&${param.ownerName}"/>
    <%@include file="/common/page.jsp"%>

    <div>
        <hr>
        <c:if test="${owner!=null}">
            <h4 align="center">宠物主人:${owner.name}</h4>
            <h4 align="center">地址:${owner.address}</h4>
            <h4 align="center">城市:${owner.city}</h4>
            <h4 align="center">电话:${owner.tel}</h4>
            <hr>

        </c:if>
        <c:if test="${visits!=null}">
            <c:forEach items="${visits}" var="visit">
                <h4>记录日期:${visit.date}</h4>
                <h4>宠物主人:${visit.petName}</h4>
                <h4>记录说明:${visit.description}</h4>
                <hr>
            </c:forEach>
        </c:if>
    </div>
</div>
</body>

后端业务逻辑处理代码

宠物信息后端业务逻辑处理 内联代码片

package petClinic.service;

import petClinic.model.Owner;
import petClinic.model.Pet;
import petClinic.model.PetsSearchData;
import petClinic.tool.CommTool;
import petClinic.tool.Page;
import petClinic.utils.JDBC;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 宠物对应的service
 */
public class PetService {

    private static PetService PETSERVICE;

    /**
     * 获取单例
     */
    public static synchronized PetService instance() {
        if (PETSERVICE == null) {
            PETSERVICE = new PetService();
        }
        return PETSERVICE;
    }

    /**
     * 搜寻查询的宠物信息
     *
     * @param petsSearchData
     * @return
     */
    public List<Pet> findAllofThis(PetsSearchData petsSearchData) {
        String sql = "select * from `pets` where 1=1 ";
        //判断是否为空
        if (!CommTool.isEmpty(petsSearchData.getName())) {
            sql += "and name like ? ";
        }
        if (!CommTool.isEmpty(petsSearchData.getType())) {
            sql += "and type = ? ";
        }
        if (!CommTool.isEmpty(petsSearchData.getOwnerName())) {
            sql += "and ownerName like ? ";
        }

        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        List<Pet> pets = new ArrayList<Pet>();

        try {
            conn = JDBC.getConnection("pets");
            st = conn.prepareStatement(sql);
            int index = 0;
            if (!CommTool.isEmpty(petsSearchData.getName())) {
                //sql += "and name like ? ";
                index++;
                st.setString(index, "%" + petsSearchData.getName() + "%");
            }
            if (!CommTool.isEmpty(petsSearchData.getType())) {
                //sql += "and type = ? ";
                index++;
                st.setString(index, petsSearchData.getType());
            }
            if (!CommTool.isEmpty(petsSearchData.getOwnerName())) {
                //sql += "and owner like ? ";
                index++;
                st.setString(index, "%" + petsSearchData.getOwnerName() + "%");
            }

            rs = st.executeQuery();
            while (rs.next()) {
                int id = rs.getInt(1);
                String name = rs.getString(2);
                String date = rs.getString(3);
                String type = rs.getString(4);
                String ownerId = rs.getString(5);
                String ownerName = rs.getString(6);

                Pet pet = new Pet(id, name, date, type, ownerId, ownerName);
                pets.add(pet);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, rs);
        }
        return pets;
    }

    /**
     * 查询页面的数据
     *
     * @param page
     * @param petsSearchData
     * @return
     */
    public Page<Pet> pageSearch(Page<Pet> page, PetsSearchData petsSearchData) {
        String sql = "select * from `pets` where 1=1 ";
        //判断是否为空
        if (!CommTool.isEmpty(petsSearchData.getName())) {
            sql += "and name like ? ";
        }
        if (!CommTool.isEmpty(petsSearchData.getType())) {
            sql += "and type=? ";
        }
        if (!CommTool.isEmpty(petsSearchData.getOwnerName())) {
            sql += "and ownerName like ? ";
        }

        sql += "limit ?,?";

        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        List<Pet> pets = new ArrayList<Pet>();

        try {
            conn = JDBC.getConnection("pets");
            st = conn.prepareStatement(sql);
            int index = 0;
            if (!CommTool.isEmpty(petsSearchData.getName())) {
                sql += "and name like ? ";
                index++;
                st.setString(index, "%" + petsSearchData.getName() + "%");
            }
            if (!CommTool.isEmpty(petsSearchData.getType())) {
                sql += "and type=? ";
                index++;
                st.setString(index, petsSearchData.getType());
            }
            if (!CommTool.isEmpty(petsSearchData.getOwnerName())) {
                sql += "and ownerName like ? ";
                index++;
                st.setString(index, "%" + petsSearchData.getOwnerName() + "%");
            }

            index++;
            st.setInt(index, page.getOffset());
            index++;
            st.setInt(index, page.getLimit());

            rs = st.executeQuery();
            while (rs.next()) {
                int id = rs.getInt(1);
                String name = rs.getString(2);
                String date = rs.getString(3);
                String type = rs.getString(4);
                String ownerId = rs.getString(5);
                String ownerName = rs.getString(6);

                Pet pet = new Pet(id, name, date, type, ownerId,ownerName);
                pets.add(pet);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, rs);
        }
        page.setDatas(pets);
        return page;
    }

    /**
     * 查询所有主人信息
     *
     * @return
     */
    public List<Owner> findAllOwners() {
        List<Owner> owners = new ArrayList<Owner>();
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "select * from owners";
            st = conn.prepareStatement(sql);
            rs = st.executeQuery();
            while (rs.next()) {
                int id = rs.getInt(1);
                String name = rs.getString(2);
                String address = rs.getString(3);
                String city = rs.getString(4);
                String tel = rs.getString(5);
                Owner owner = new Owner(id, name, address, city, tel);
                owners.add(owner);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, rs);
        }
        return owners;
    }

    /**
     * 宠物信息添加
     * @param pet
     * @return
     */
    public int add(Pet pet) {
        Connection conn = null;
        PreparedStatement st = null;
        int i = 0;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "insert into `pets` values (null,?,?,?,?,?)";
            st = conn.prepareStatement(sql);
            st.setString(1, pet.getName());
            st.setString(2, pet.getDate());
            st.setString(3, pet.getType());
            st.setString(4, pet.getOwnerId());
            st.setString(5, pet.getOwnerName());
            i = st.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, null);
        }
        return i;
    }

    /**
     * 通过主人名字查询是否存在
     * @param ownerName
     * @return
     */
    public Boolean findOwnerByName(String ownerName) {
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        Boolean exit = false;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "select * from owners where name = ?";
            st = conn.prepareStatement(sql);
            st.setString(1,ownerName);
            rs = st.executeQuery();
            exit = rs.next();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            JDBC.release(conn,st,rs);
        }
        return exit;
    }

    /**
     * 通过id获取宠物信息
     * @param id
     * @return
     */
    public Pet getById(int id) {
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        Pet pet = null;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "select * from `pets` where `id`=?";
            st = conn.prepareStatement(sql);
            st.setInt(1, id);
            rs = st.executeQuery();
            while (rs.next()) {
                String name = rs.getString(2);
                String date = rs.getString(3);
                String type = rs.getString(4);
                String ownerId = rs.getString(5);
                String ownerName = rs.getString(6);
                pet = new Pet(id,name,date,type,ownerId,ownerName);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, rs);
        }
        return pet;
    }

    /**
     * 宠物信息修改
     * @param pet
     * @return
     */
    public int update(Pet pet) {
        Connection conn = null;
        PreparedStatement st = null;
        int i = 0;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "update pets set name=?,date=?,type=?,ownerId=?,ownerName=? where id=?";
            st = conn.prepareStatement(sql);
            st.setString(1, pet.getName());
            st.setString(2, pet.getDate());
            st.setString(3, pet.getType());
            st.setString(4, pet.getOwnerId());
            st.setString(5, pet.getOwnerName());
            st.setInt(6,pet.getId());
            i = st.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, null);
        }
        return i;
    }

    /**
     * 删除宠物信息
     * @param id
     */
    public void del(int id) {
        Connection conn = null;
        PreparedStatement st = null;

        try {
            conn = JDBC.getConnection("pets");
            String sql = "delete from `pets` where `id`=?";
            st = conn.prepareStatement(sql);
            st.setInt(1, id);
            int i = st.executeUpdate();
            if (i > 0)
                System.out.println("编号为" + id + "的宠物已删除");

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBC.release(conn, st, null);
        }
    }
}

数据库连接JDBC

连接代码片

package petClinic.utils;

import java.sql.*;

public class JDBC {
    private static String url = null;
    private static String username = null;
    private static String password = null;

    //获取连接,传入数据库名称参数
    public static Connection getConnection(String databaseName) throws SQLException {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");//固定写法,加载驱动
            url = "jdbc:mysql://localhost:3306/"+databaseName +//传入要连接的数据库参数
                    "?characterEncoding=UTF-8&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode" +
                    "=false&serverTimezone=UTC";
            username = "root";//用户名
            password = "123456";//用户密码
        } catch (Exception e) {
            e.printStackTrace();
        }
        //System.out.println("链接成功!");
        return DriverManager.getConnection(url,username,password);
    }

    //传入数据库名称和要执行的sql语句,返回一个PreparedStatement
    public static PreparedStatement execute(String databaseName,String sql){
        Connection conn = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        try {
            conn = getConnection(databaseName);
            st = conn.prepareStatement(sql);
            return st;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    //释放连接资源
    public static void release(Connection conn, Statement st, ResultSet rs){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(st!=null){
            try {
                st.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        //System.out.println("资源已释放!");
    }
}

代码已上传Gitee仓库,需要源码可自行下载

完结,欢迎指正

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多喝热水,重启试试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值