java数据库后台设计
java数据库后台管理应该分层管理,不要在前端页面直接SQL数据.前端页面应该都是java对象数据.
一、我们看到的存放数据的表,实际就是为了存放数据的实体类,我们一般把它放到model层。
1、创建实体:DeadBreed 类
package com.xlkj.model;
import java.io.Serializable;
/**
- 死亡种猪登记
/
import java.util.Date;
public class DeadBreed implements Serializable{
/*
*
*/
private static final long serialVersionUID = -9137310603203490816L;
private int FID;//内码ID
private String FBillNo;//单据号
private Date FDate;//死亡时间
private int FBreedID;//种猪ID
private int FType;//种类
private String FBreedNumber;//耳号
private String FBreedName;//品种
private int FFenceID;//栏号ID
private String FFenceName;//栏号名称
private int FPersonid;//处理人
private String FGive;//死亡原因
private String FNote;//备注
private String FZren;//责任确认
private String FCreatorID;//创建人
private Date FCreateTime;//建立时间
private int FVoucherID;//凭证号
public DeadBreed(){
this.FVoucherID=0;
}
public String getFBillNo() {
return FBillNo;
}
public void setFBillNo(String fBillNo) {
FBillNo = fBillNo;
}
public String getFBreedName() {
return FBreedName;
}
public void setFBreedName(String fBreedName) {
FBreedName = fBreedName;
}
public String getFZren() {
return FZren;
}
public void setFZren(String fZren) {
FZren = fZren;
}
public int getFType() {
return FType;
}
public void setFType(int fType) {
FType = fType;
}
public int getFID() {
return FID;
}
public void setFID(int fID) {
FID = fID;
}
public Date getFDate() {
return FDate;
}
public void setFDate(Date fDate) {
FDate = fDate;
}
public int getFBreedID() {
return FBreedID;
}
public void setFBreedID(int fBreedID) {
FBreedID = fBreedID;
}
public String getFBreedNumber() {
return FBreedNumber;
}
public void setFBreedNumber(String fBreedNumber) {
FBreedNumber = fBreedNumber;
}
public int getFFenceID() {
return FFenceID;
}
public void setFFenceID(int fFenceID) {
FFenceID = fFenceID;
}
public String getFFenceName() {
return FFenceName;
}
public void setFFenceName(String fFenceName) {
FFenceName = fFenceName;
}
public int getFPersonid() {
return FPersonid;
}
public void setFPersonid(int fPersonid) {
FPersonid = fPersonid;
}
public String getFGive() {
return FGive;
}
public void setFGive(String fGive) {
FGive = fGive;
}
public String getFNote() {
return FNote;
}
public void setFNote(String fNote) {
FNote = fNote;
}
public String getFCreatorID() {
return FCreatorID;
}
public void setFCreatorID(String fCreatorID) {
FCreatorID = fCreatorID;
}
public Date getFCreateTime() {
return FCreateTime;
}
public void setFCreateTime(Date fCreateTime) {
FCreateTime = fCreateTime;
}
public int getFVoucherID() {
return FVoucherID;
}
public void setFVoucherID(int fVoucherID) {
FVoucherID = fVoucherID;
}
}
2、实体类对应到数据表:DeadBreed.hbm.xml
<?xml version="1.0"?>
<class name="DeadBreed" table="t_DeadBreed"><id name="FID"><generator class="identity" /></id><property name="FBillNo"/><property name="FDate" /><property name="FType"/><property name="FBreedID" /><property name="FBreedNumber" /><property name="FBreedName"/><property name="FFenceID" /><property name="FFenceName" /><property name="FPersonid"/><property name="FGive"/><property name="FZren"/><property name="FNote"/><property name="FCreatorID"/><property name="FCreateTime"/><property name="FVoucherID"/>
</class>
二、建立基本的数据库接口,就是对数据增加,删除,修改,查询等的接口方法:BaseDao (interface)
package com.xlkj.dao;
import java.util.List;
/**
@author 余中伦 E-mail:371891632@qq.com
@version 创建时间:2022-9-3 下午5:12:01
类说明:
*/
public interface BaseDao {
//@保存,更新,删除数据
public void save(String sql,Object[] args);
public void update(String sql,Object[] args);
public void delete(String sql,Object[] args);
//@查询数据,判断数据
public List<?> getListDate(String sql,String className,Object[] args);
public Object getObject(String sql,String className,Object[] args);
public int getCounts(String sql,Object[] args);
}
三、实现上面接口BaseDao程序类:BaseDaoImpl
package com.xlkj.dao.impl;
import java.util.List;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import com.xlkj.dao.BaseDao;
import com.xlkj.util.JdbcProUtils;
/**
@author 余中伦 E-mail:371891632@qq.com
@version 创建时间:2022-9-3 下午5:13:40
类说明:JdbcProUtils类是采用的连接池
*/
public class BaseDaoImpl implements BaseDao {
private SimpleJdbcTemplate jdbc = new SimpleJdbcTemplate(
JdbcProUtils.getDataSource());
@Override
public void save(String sql,Object[] args) {
this.jdbc.update(sql,args);
}
@Override
public void update(String sql,Object[] args) {
this.jdbc.update(sql, args);
}
@Override
public void delete(String sql, Object[] args) {
this.jdbc.update(sql, args);
}
public List<?> getListDate(String sql, String className,Object[] args) {@SuppressWarnings("rawtypes")Class c=null;Object o=null;try {c = Class.forName(className); try {o=c.newInstance();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return this.jdbc.query(sql, ParameterizedBeanPropertyRowMapper.newInstance(o.getClass()),args);
}
@Override
public Object getObject(String sql, String className, Object[] args) {@SuppressWarnings("rawtypes")Class c=null;Object o=null;try {c = Class.forName(className); try {o=c.newInstance();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return this.jdbc.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(o.getClass()),args);
}
@Override
public int getCounts(String sql, Object[] args) { return this.jdbc.queryForInt(sql, args);
}
}
四、基础的数据库服务类:BaseService,就是把服务层单独为一层。为我们后面的实体类的服务,是数据库打交道的一层。
package com.xlkj.service;
import java.util.List;
import com.xlkj.dao.BaseDao;
import com.xlkj.dao.impl.BaseDaoImpl;
/**
@author 余中伦 E-mail:371891632@qq.com
@version 创建时间:2022-9-3 下午5:24:10
类说明:
*/
public class BaseService {
private BaseDao baDao=new BaseDaoImpl();
public BaseDao getBaDao() {return baDao;
}public void setBaDao(BaseDao baDao) {this.baDao = baDao;
}public void save(String sql,Object[] args) { this.baDao.save(sql, args);
}
public void update(String sql,Object[] args) {this.baDao.update(sql, args);
}public void delete(String sql, Object[] args) {this.baDao.delete(sql, args);
}public List<?> getListDate(String sql, String className,Object[] args) {return this.baDao.getListDate(sql, className,args);
}
public Object getObject(String sql, String className, Object[] args) {return this.baDao.getObject(sql, className, args);
}
public int getCounts(String sql, Object[] args) { return this.baDao.getCounts(sql, args);
}
}
五、数据库连接池的实现 JdbcProUtils ,注意该类中dbcpconfig.properties配置文件哦。该配文件放到源码的根目录就是工程的 source下。该配文件就是写数据驱动,连接IP,用户及密码等。
package com.xlkj.util;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class JdbcProUtils {
private static DataSource myDataSource = null;
private JdbcProUtils() {
}
static {
try {
Properties prop = new Properties();
InputStream dbc = JdbcProUtils.class.getClassLoader()
.getResourceAsStream(“dbcpconfig.properties”);
prop.load(dbc);
myDataSource = BasicDataSourceFactory.createDataSource(prop);
}catch(SQLException E){
E.printStackTrace();
}
catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
public static DataSource getDataSource() {return myDataSource;
}public static Connection getConnection() throws SQLException {return myDataSource.getConnection();
}
public static Statement getStmt(Connection conn) throws SQLException{return myDataSource.getConnection().createStatement();
}
public static void closeStmt(Statement stmt){try{if(stmt!=null){stmt.close();stmt=null;}}catch(SQLException e){e.printStackTrace();}
}
public static void release(Object o)
{try{if(o instanceof ResultSet){((ResultSet)o).close();}else if(o instanceof Statement){((Statement)o).close();}else if(o instanceof Connection){((Connection)o).close();}}catch(Exception e){e.printStackTrace();}
}
public static void free(ResultSet rs, Statement st, Connection conn) {try {if (rs != null)rs.close();} catch (SQLException e) {e.printStackTrace();} finally {try {if (st != null)st.close();} catch (SQLException e) {e.printStackTrace();} finally {if (conn != null)try {conn.close();} catch (Exception e) {e.printStackTrace();}}}
}
}
六、具体类的服务方法,就是保存数据,删除数据,修改数据,查询数据等,我举例说明:我创建了一个DeadBreedService继存于BaseService类,并重写该类的方法,并且添加自己想的方法,但自己的方法都去调用BaseService类中的方法:
package com.xlkj.service;
import java.util.Date;
import java.util.List;
import com.xlkj.model.DeadBreed;
/**
@author 余中伦 E-mail:371891632@qq.com
@version 创建时间:2022-9-3 下午5:26:30 类说明:
*/
public class DeadBreedService extends BaseService {private String className = “com.xlkj.model.DeadBreed”;
public void saveDeadBreed(DeadBreed db) {
String sql = “insert into t_DeadBreed(FBillNo,FDate,FBreedID,FType,FBreedNumber,FBreedName,FFenceID,FFenceName,”
+ “FPersonid,FGive,FZren,FNote,FCreatorID,FCreateTime,FVoucherID) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)”;
Object[] args = new Object[] { db.getFBillNo(), db.getFDate(),
db.getFBreedID(), db.getFType(), db.getFBreedNumber(),
db.getFBreedName(), db.getFFenceID(), db.getFFenceName(),
db.getFPersonid(), db.getFGive(), db.getFZren(), db.getFNote(),
db.getFCreatorID(), db.getFCreateTime() ,db.getFVoucherID()};
this.save(sql, args);
}public void update(DeadBreed db) {
String sql = "update t_DeadBreed set FBillNo=?,FDate=?,FBreedID=?,FType=?,FBreedNumber=?,FBreedName=?,FFenceID=?,FFenceName=?, "
+ “FPersonid=?,FGive=?,FZren=?,FNote=?,FCreatorID=?,FCreateTime=?,FVoucherID=? where FID=?”;
Object[] args = new Object[] { db.getFBillNo(), db.getFDate(),
db.getFBreedID(), db.getFType(), db.getFBreedNumber(),
db.getFBreedName(), db.getFFenceID(), db.getFFenceName(),
db.getFPersonid(), db.getFGive(), db.getFZren(), db.getFNote(),
db.getFCreatorID(), db.getFCreateTime(),db.getFVoucherID(), db.getFID() };
this.update(sql, args);
}public void delete(DeadBreed db) {
String sql = “delete t_DeadBreed where FID=?”;
Object[] args = new Object[] { db.getFID() };
this.delete(sql, args);
}public void delete(int FID) {
String sql = “delete t_DeadBreed where FID=?”;
Object[] args = new Object[] { FID };
this.delete(sql, args);}
public List<?> getListDate() {
String sql = “select * from t_DeadBreed order by fdate”;
return this.getListDate(sql, className, null);
}public DeadBreed getDeadBreed(int FID) {
int i = 0;
String sql = “select count() from t_DeadBreed where FID=?";
Object[] args = new Object[] { FID };
i = this.getCounts(sql, args);
if (i > 0) {
sql = “select * from t_DeadBreed where FID=?”;
return (DeadBreed)this.getObject(sql, className, args);
} else {
return null;
}
}
public List<?> getListDeadBreed(Date fdate1, Date fdate2, String fnum1) { String sql = "select * from t_DeadBreed where (FDate>=? and FDate<=?) and FBreedNumber like ? order by fdate"; Object[] args = new Object[] { fdate1, fdate2, fnum1 }; return this.getListDate(sql, className, args); } public DeadBreed getDeadBreed(int FBreedID, int FFenceID) { String sql = "select * from t_DeadBreed where FBreedID=? and FFenceID=?"; Object[] args = new Object[] { FBreedID, FFenceID }; return (DeadBreed)this.getObject(sql, className, args); } public List<?> getListUnDeadBreed(int depid) {
String sql = “select FID,FBillNo,FDate,FType,FBreedID,FBreedNumber,FBreedName,FFenceID,FFenceName,FPersonid,FGive,FZren,FNote,FCreatorID,FCreateTime,FVoucherID from vw_UnDeadBreed where depid=? order by fdate”;
Object[] args = new Object[] { depid };
return this.getListDate(sql, className, args);
}
public List<?> getListUnDeadBreed(int depid, Date fdate1,
Date fdate2, String fnum1) {
String sql = “select FID,FBillNo,FDate,FType,FBreedID,FBreedNumber,FBreedName,FFenceID,FFenceName,FPersonid,FGive,FZren,FNote,FCreatorID,FCreateTime,FVoucherID from vw_UnDeadBreed where depid=? and (FDate>=? and FDate<=?) and FBreedNumber like ? order by fdate”;
Object[] args = new Object[] { depid, fdate1, fdate2, fnum1 };
return this.getListDate(sql, className, args);
}
public String getCurrentNum(String FName) {
int i = 0;
String sql = "select count() from t_DeadBreed where FBillNo like '%S”
+ FName + “%'”;
i = this.getCounts(sql,null);
if (i > 0) {
sql = “select max(FBillNo) from t_DeadBreed where FBillNO like '%S”
+ FName + “%'”;
String str = (String)this.getObject(sql, null, null);
int len = str.length();
if (len > 9) {
String str1 = str.substring(9, str.length());
int k = Integer.parseInt(str1);
k++;
String str2 = k + “”;
String str3 = “”;
for (int j = 0; j < 3 - str2.length(); j++) {
str3 = str3 + “0”;
}
str3 = str3 + k;
return str3;
} else {
return “001”;
}
} else {
return “001”;
}
}public boolean hasBiller(String fuserid,int FID) {
int i = 0;
String sql = “select count(*) from t_DeadBreed where FCreatorID=? AND FID=?”;
Object[] args = new Object[] { fuserid , FID};
i = this.getCounts(sql, args);
if (i > 0)
return true;
else
return false;}
}
七,测试例子:
package com.xlkj.test;
import java.util.Iterator;
import java.util.List;
import com.xlkj.model.DeadBreed;
import com.xlkj.service.DeadBreedService;
/**
@author 余中伦 E-mail:371891632@qq.com
@version 创建时间:2022-6-20 下午7:44:26 类说明:
*/
public class TestDemo01 {
public static void main(String[] args) throws Exception {
DeadBreedService dbs=new DeadBreedService();
List<?> list=dbs.getListDate(); for(Iterator<?> iter=list.iterator();iter.hasNext()java数据库后台设计相关推荐
- JAVA数据库课程设计—简易网上银行管理系统-java图形用户界面
](这里写自定义目录标题) 所使用数据库版本-mysql5.7 所使用java编译器-idea2019 效果实现图: 登录界面 功能界面: 注册界面: 管理员界面: 数据库表设计: 函数图: 代码过多 ...
- java数据库图书销售系统_SQL+java数据库课程设计,图书销售管理系统
[实例简介] SQL数据库课程设计,图书销售管理系统,报告,任务书,挺全的 [实例截图] [核心代码] 07计本2班_15号_刘思旭_图书销售管理系统 └── 07计本2班_15号_刘思旭_图书销售管 ...
- java 课程设计数据库_人事管理系统(java数据库课程设计)+SQL数据库
[实例简介] 员工各种信息:包括员工的基本信息,如编号.姓名.性别.学历.所属部门.毕业院校.健康情况.职称.职务.奖惩等:员工各种信息的修改:对转出.辞退.退休员工信息的删除:按照一定条件,查询.统 ...
- 查询学生选修课程管理系统java_JAVA数据库课程设计学生选课管理系统的
<JAVA数据库课程设计学生选课管理系统的>由会员分享,可在线阅读,更多相关<JAVA数据库课程设计学生选课管理系统的(59页珍藏版)>请在人人文库网上搜索. 1.一.课程设计 ...
- Android设计开发 答题app 安卓+后台Java+数据库mysql
Android设计开发 答题app 安卓+后台Java+数据库mysql 基于安卓设计开发答题系统界面简洁大方 有用户注册,登录模块 主页,答题,选择答案,提交答案等模块 程序已经调试完成,包括前端安 ...
- 计算机毕业设计Java微商后台管理系统(源码+系统+mysql数据库+Lw文档)
计算机毕业设计Java微商后台管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java微商后台管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...
- 计算机毕业设计Java购物网站设计(源码+系统+mysql数据库+Lw文档)
计算机毕业设计Java购物网站设计(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java购物网站设计(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...
- 基于JAVA旅游网站设计计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA旅游网站设计计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA旅游网站设计计算机毕业设计源码+数据库+lw文档+系统+部署 项目架构:B/S架构 开发语言:Java语言 开发软 ...
- 计算机毕业设计Java婚纱摄影网设计(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java婚纱摄影网设计(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java婚纱摄影网设计(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开 ...
最新文章
- .jsp与servlet之间页面跳转及参数传递实例
- WebSocket+MSE——HTML5 直播技术解析
- 云计算背后的秘密(3)-BigTable
- HihoCoder - 1558
- Linux脚本5秒后启动程序,嵌入式Linux启动时间优化的秘密之四-启动脚本
- Android UI-实现底部切换标签(fragment)
- linux编码合适修改_CentOS升级Linux内核备忘录
- c++11 多线程编程(一)------初始
- AJAX培训第一讲:AJAX基础
- Hibernate annotation配置方式的MappedBy使用详解
- 苹果手机计算机切换用户名,苹果ID如何切换账号?苹果手机切换ID登录使用教程...
- 阿里云短信验证码+Java开发
- Spring Boot(四)—— Spring MVC自动配置
- HTML中font标签用法
- Unity3D之太空大战一
- 决策树的三种常见算法
- dB(分贝)定义及其应用
- css 从右到左滚动,CSS 文字从左到右滚动 (右进左出)
- 普林斯顿大学计算机专业,普林斯顿大学计算机专业就业前景怎么样?
- 【速览】2022年中国光伏逆变器行业市场现状及企业格局分析:行业需求增加,发展迅速[图]
热门文章
- 【30秒】去除360浏览器“网页走丢了/网页无法访问“页面的垃圾广告!----2021.03.09
- 不要随便修改hosts文件
- 8086汇编基础 mov word ptr 字数据赋值
- bios中只有windows boot manager下用U盘启动
- 编程之美之中国象棋问题
- Unity项目接入Wwise
- Context的用法
- 线程池是什么?什么情况下使用线程池?使用线程的好处是什么?
- c语言编写printf函数,C语言之printf函数详解
- MediaCodec编码
- JAVA数据库课程设计—简易网上银行管理系统-java图形用户界面