将bean对象里的值一次插入数据库

将bean对象里的值一次插入数据库,第1张

说点大白话~~呵呵。单独做个 *** 作数据库的类,在这个类中引用bean。能明白吧

给你个以前工作的例子。。

这个是BEAN

package cn.ccnp.area

import java.io.Serializable

public class Area implements Serializable {

/**

* 区域ID

*/

private String areaId

/**

* 区域名称

*/

private String areaName

/**

* 所属区县

*/

private String areaFatherId

/**

* 所属省市

*/

private String areaGrandfatherId

/**

* 区域ID getter,setter method

*/

public String getAreaId( ){

return areaId

}

public void setAreaId( String areaId ){

this.areaId = areaId

}

/**

* 区域名称 getter,setter method

*/

public String getAreaName( ){

return areaName

}

public void setAreaName( String areaName ){

this.areaName = areaName

}

/**

* 所属区县 getter,setter method

*/

public String getAreaFatherId( ){

return areaFatherId

}

public void setAreaFatherId( String areaFatherId ){

this.areaFatherId = areaFatherId

}

/**

* 所属省市 getter,setter method

*/

public String getAreaGrandfatherId( ){

return areaGrandfatherId

}

public void setAreaGrandfatherId( String areaGrandfatherId ){

this.areaGrandfatherId = areaGrandfatherId

}

}

这个是对数据库的 *** 作。懒得挑了。。都粘过来,你自己看吧,有些是公司内部的类,不用都明白哈~~

package cn.ccnp.area

/**

* <p>Title: AreaMgrImpl</p>

* <p>Description: area implement</p>

* <p>Copyright: Copyright (c) 2006</p>

* <p>Company: jadosoft</p>

* @author Yangyang

* @version 1.0

*/

import java.sql.ResultSet

import java.sql.SQLException

import java.util.ArrayList

import org.apache.log4j.Logger

import cn.jado.app.log.OperatorLog

import cn.jado.app.log.OperatorLogger

import cn.jado.lib.QuoteReplace

import cn.jado.lib.web.CommonDAO

import cn.jado.lib.web.Page

import cn.jado.lib.web.PageDiv

public class AreaMgrImpl {

/**

* Constructor

*/

public AreaMgrImpl(){

}

/**

* OperatorLog

*/

private OperatorLog log = null

private int rowNum = 0

/**

* OperatorLogSetter

*/

public void setLog(Object o) {

if (o instanceof OperatorLog) {

OperatorLog log = (OperatorLog) o

this.log = log

}

}

/**

* DataSource lookup jndi

*/

private String jndi = "jdbc/ccn"

private String tableName = "area"

/**

* log4j

*/

private static Logger logger= Logger.getLogger(AreaMgrImpl.class.getName())

/**

* 判断是否已经存在相同记录

* @param area 记录的值对象

* @return 是否存在另一记录与该记录相同

*/

public boolean existedArea( Area area ) {

//单引号替换

area = (Area)QuoteReplace.replace(area)

StringBuffer sqlBuf = new StringBuffer(100)

sqlBuf.append(" select count(*) from " + tableName)

/* @toDo: 要保留的行,去掉行前注释符,注:只保留主键(或联合主键的行)做是否存在的判断依据 */

sqlBuf.append(" where area_id = " + area.getAreaId()) //区域ID

//sqlBuf.append(" and area_name = '" + area.getAreaName()+ "'") //区域名称

//sqlBuf.append(" and area_father_id = '" + area.getAreaFatherId()+ "'") //所属区县

//sqlBuf.append(" and area_grandfather_id = '" + area.getAreaGrandfatherId()+ "'") //所属省市

logger.warn("---sql:existedArea---" + sqlBuf)

CommonDAO dao = null

ResultSet rs = null

boolean existed = false

try {

dao = new CommonDAO(jndi)

rs = dao.query(sqlBuf.toString())

if ( rs.next() ){

if (rs.getInt(1) != 0) {

existed = true

}

}

}

catch (Exception e) {

e.printStackTrace()

}

finally {

dao.destroy()

}

return existed

}

/**

* add a new record

* @param area 新增记录的值对象

* @return 是否添加成功

*/

public boolean addArea( Area area ){

//组合sql语句

StringBuffer sqlBuf = new StringBuffer(100)

sqlBuf

.append("insert into "+tableName)

.append("(")

.append("area_id") //区域ID

.append(",area_name") //区域名称

.append(",area_father_id") //所属区县

.append(",area_grandfather_id") //所属省市

.append(")")

.append(" values(")

StringBuffer sqlBufValues = new StringBuffer(100)

sqlBufValues

.append("" + area.getAreaId()) //区域ID

.append(",'" + area.getAreaName() + "'") //区域名称

.append(",'" + area.getAreaFatherId() + "'") //所属区县

.append(",'" + area.getAreaGrandfatherId() + "'") //所属省市

.append(")")

sqlBuf = sqlBuf.append(sqlBufValues)

logger.warn("---sql:addArea---"+sqlBuf)

//更新数据

return this.updateData( sqlBuf.toString(),"addArea" )

}

/**

* edit the specified object

* @param area 修改成的新记录的对象

* @return 修改是否成功

*/

public boolean editArea( Area area){

//组合sql语句

StringBuffer sqlBuf = new StringBuffer(100)

sqlBuf

.append("update "+tableName+" set ")

.append("area_id = " + area.getAreaId()) //区域ID

.append(",area_name = '" + area.getAreaName() + "'") //区域名称

.append(",area_father_id = '" + area.getAreaFatherId() + "'") //所属区县

.append(",area_grandfather_id = '" + area.getAreaGrandfatherId() + "'") //所属省市

.append(" where area_id = ")

.append(area.getAreaId())

logger.warn("---sql:editArea---"+sqlBuf)

//更新数据

return updateData( sqlBuf.toString(),"editArea" )

}

/**

* delete the specified object by id

* @param areaID 记录的ID值

* @return 删除记录是否成功

*/

private boolean delAreaById(String areaID) {

StringBuffer sqlBuf = new StringBuffer(100)

sqlBuf.append(" delete from "+tableName)

sqlBuf.append(" where area_id=")

sqlBuf.append(areaID)

logger.warn("---sql:delAreaById---"+sqlBuf)

boolean result = this.updateData( sqlBuf.toString(), "delAreaById" )

return result

}

/**

* delete the specified objects

* @param areaIDs 多条记录ID组成的数组

* @return boolean 删除多条是否成功

*/

public boolean delAreas(String[] areaIDs) {

if ( areaIDs != null &&areaIDs.length >0 ) {

int size = areaIDs.length

for (int i = 0i <sizei++) {

if ( !this.delAreaById( areaIDs[i]) ) {

return false

}

}

return true

}

return false

}

/**

* get the specified object

* @param areaId 记录的ID值

* @return 与该ID匹配的记录的值对象

*/

public Area getAreaByID( String areaId ){

Area area = null

//组合查询条件

StringBuffer sqlBuf = new StringBuffer()

sqlBuf

.append("select * from "+tableName+" where area_id = ")

.append(areaId)

logger.warn("---sql:getAreaByID---"+sqlBuf)

CommonDAO dao = null

ResultSet rs = null

try{

dao = new CommonDAO(jndi)

rs = dao.query(sqlBuf.toString())

//读取结果集信息

if ( rs.next() ){

area = this.readDataFromRs(rs)

}

}catch( Exception ex ){

ex.printStackTrace()

}finally{

dao.destroy()

dao=null

sqlBuf = null

}

return area

}

/**

* get all objects

* @param

* @return 全部记录的列表

*/

public ArrayList getAreaList(){

ArrayList arr = null

//组合查询条件

String sql = "select * from "+tableName+" order by area_id desc"

logger.warn("---sql:getAreaList---"+sql)

CommonDAO dao = null

ResultSet rs = null

try{

dao = new CommonDAO(jndi)

rs = dao.query(sql)

//读取结果集信息

arr = this.readDataListFromRs(rs)

}catch( Exception ex ){

ex.printStackTrace()

}finally{

dao.destroy()

dao=null

sql = null

}

return arr

}

/**

* get all objects

* @param area

* @return 满足查询条件的记录的对象组成的列表

*/

public ArrayList getAreaList(Area area ){

ArrayList arr = null

//组合查询条件

StringBuffer sqlBuf = new StringBuffer(50)

sqlBuf.append( "select * from "+tableName)

sqlBuf.append( " where 1=1 ")

/* @todo: 可以在这里加上你自己的查询条件 */

sqlBuf.append( " order by area_id desc")

logger.warn("---sql:getAreaList---"+sqlBuf)

CommonDAO dao = null

ResultSet rs = null

try{

dao = new CommonDAO(jndi)

rs = dao.query(sqlBuf.toString())

//读取结果集信息

arr = this.readDataListFromRs(rs)

}catch( Exception ex ){

ex.printStackTrace()

}finally{

dao.destroy()

dao=null

sqlBuf = null

}

return arr

}

/**

* get all objects by search

* 数值、日期等按指定区间查询

* @param areaSearch 查询条件的值对象

* @return 满足条件的记录组成的对象列表

*/

public ArrayList getAreaListBySearch(AreaSearch areaSearch ){

ArrayList arr = null

StringBuffer sqlBuf = new StringBuffer(50)

StringBuffer sqlWhere = this.getSqlwherBySearch(areaSearch)

sqlBuf.append( "select * from " + tableName + " where 1=1 ")

sqlBuf.append(sqlWhere)

sqlBuf.append( " order by area_id desc")

logger.warn("---sql:getAreaListSplit---"+sqlBuf)

CommonDAO dao = null

ResultSet rs = null

try{

dao = new CommonDAO(jndi)

rs = dao.query(sqlBuf.toString())

//读取结果集信息

arr = this.readDataListFromRs(rs)

}catch( Exception ex ){

ex.printStackTrace()

}finally{

dao.destroy()

dao=null

sqlBuf = null

}

return arr

}

/**

* 查询结果分页显示

* @param pageBean 页信息的对象

* @return 是否分页查询成功

*/

public boolean getAreaListSplit( Page pageBean ){

ArrayList arr = new ArrayList()

int pageSize = 0

int pageNo = 0

if (pageBean == null) {

return false

}

if (pageBean.getPageSize() <= 0) {

pageBean.setPageSize(50)

}

if (pageBean.getPageNo()<= 0) {

pageBean.setPageNo(1)

}

pageSize = pageBean.getPageSize()

pageNo = pageBean.getPageNo()

StringBuffer sql = new StringBuffer(" select * from "+tableName+" order by area_id desc")

StringBuffer countSql = new StringBuffer("select count(*) from "+tableName)

logger.warn("---sql:getAreaListSplit---"+sql)

logger.warn("---countSql:getAreaListSplit---"+countSql)

CommonDAO dao = null

try{

dao = new CommonDAO(jndi)

rowNum = PageDiv.getCount(countSql.toString(), dao)

pageBean.setPageInfo(rowNum, pageSize)

//执行查找

ResultSet rs = PageDiv.getResultSet(pageNo, pageSize, rowNum, sql.toString(), dao)

for (int i = 0i <pageSize &&rs.next()i++) {

//从结果集中读取数据

arr.add(readDataFromRs(rs))

}

}catch( Exception ex ){

ex.printStackTrace()

}finally{

dao.destroy()

}

pageBean.setList(arr)

return true

}

/**

* get objects by search ,display split

* 按值查询并分页显示,数值、日期等查指定区间

* @param pageBean 页信息对象

* @param areaSearch 查询条件对象

* @return 获得页列表是否成功

*/

public boolean getAreaListSplitBySearch( Page pageBean,AreaSearch areaSearch ){

ArrayList arr = new ArrayList()

int pageSize = 0

int pageNo = 0

if (pageBean == null) {

return false

}

if (pageBean.getPageSize() <= 0) {

pageBean.setPageSize(15)

}

if (pageBean.getPageNo()<= 0) {

pageBean.setPageNo(1)

}

pageSize = pageBean.getPageSize()

pageNo = pageBean.getPageNo()

StringBuffer sqlWhere = this.getSqlwherBySearch(areaSearch)

StringBuffer sql = new StringBuffer(" select * from " + tableName + " where 1=1 " + sqlWhere + " order by area_id desc")

StringBuffer countSql = new StringBuffer("select count(*) from " + tableName + " where 1=1 " + sqlWhere)

logger.warn("---sql:getAreaListSplit---"+sql)

logger.warn("---countSql:getAreaListSplit---"+countSql)

CommonDAO dao = null

try{

dao = new CommonDAO(jndi)

rowNum = PageDiv.getCount(countSql.toString(), dao)

pageBean.setPageInfo(rowNum, pageSize)

//执行查找

ResultSet rs = PageDiv.getResultSet(pageNo, pageSize, rowNum, sql.toString(), dao)

for (int i = 0i <pageSize &&rs.next()i++) {

//从结果集中读取数据

arr.add(readDataFromRs(rs))

}

}catch( Exception ex ){

ex.printStackTrace()

}finally{

dao.destroy()

}

pageBean.setList(arr)

return true

}

/**

* 读取值对象列表

* @param rs 结果集

* @return 从结果集中读取的对象列表

*/

private ArrayList readDataListFromRs(ResultSet rs) throws SQLException {

ArrayList arr = new ArrayList()

Area area = null

try{

while (rs.next()) {

area = new Area()

//将字段值set到值对象中

area.setAreaId(rs.getString("area_id"))//区域ID

area.setAreaName(rs.getString("area_name"))//区域名称

area.setAreaFatherId(rs.getString("area_father_id"))//所属区县

area.setAreaGrandfatherId(rs.getString("area_grandfather_id"))//所属省市

arr.add(area)

}

}catch( Exception ex ){

ex.printStackTrace()

}

return arr

}

/**

* 读取单个值对象

* @param rs 结果集

* @return 按某列读取的特定记录的值对象

*/

private Area readDataFromRs(ResultSet rs) throws SQLException {

Area area = new Area()

try{

//将字段值set到值对象中

area.setAreaId(rs.getString("area_id"))//区域ID

area.setAreaName(rs.getString("area_name"))//区域名称

area.setAreaFatherId(rs.getString("area_father_id"))//所属区县

area.setAreaGrandfatherId(rs.getString("area_grandfather_id"))//所属省市

}catch( Exception ex ){

ex.printStackTrace()

}

return area

}

/**

* 更新数据 用于数据更新语句 Insert,Update,Delete

* @param updateSql 数据库更新语句

* @param logtype 数据库 *** 作类型

* @return 更新成功与否

*/

private boolean updateData(String updateSql, String logtype) {

int returnInt = -1

boolean returnFlag = false

CommonDAO dao = null

try {

dao = new CommonDAO("jdbc/ccn")

returnInt = dao.excute(updateSql)

if (returnInt != -1) {

returnFlag = true

}

}

catch (Exception ex) {

ex.printStackTrace()

}

finally {

dao.destroy()

}

// 写入日志

if (log != null) {

log.setSql(updateSql)

log.setOperation(logtype)

OperatorLogger loggerUpdate = new OperatorLogger()

loggerUpdate.addLog(log)

}

return returnFlag

}

/**

* 获得按值对象查询的查询条件

* @param areaSearch 条件查询的值对象

* @return sql查询条件

*/

private StringBuffer getSqlwherBySearch(AreaSearch areaSearch ){

areaSearch = (AreaSearch)QuoteReplace.replace(areaSearch) //值对象中的单引号替换

String areaId = areaSearch.getAreaId()

String areaName = areaSearch.getAreaName()

String areaFatherId = areaSearch.getAreaFatherId()

String areaGrandfatherId = areaSearch.getAreaGrandfatherId()

StringBuffer sqlWhere = new StringBuffer(" ")

if (areaId != null &&areaId.trim().length() != 0) {

sqlWhere.append(" and area_id like '%").append(areaId).append("%' ")

}

if (areaName != null &&areaName.trim().length() != 0) {

sqlWhere.append(" and area_name like '%").append(areaName).append("%' ")

}

if (areaFatherId != null &&areaFatherId.trim().length() != 0) {

sqlWhere.append(" and area_father_id like '%").append(areaFatherId).append("%' ")

}

if (areaGrandfatherId != null &&areaGrandfatherId.trim().length() != 0) {

sqlWhere.append(" and area_grandfather_id like '%").append(areaGrandfatherId).append("%' ")

}

return sqlWhere

}

/**

* 根据不同类别得到区域名称

* @param areaSearch 条件查询的值对象,areaType 区域类别如:城市,区,县

* @return 符合条件的area集合

*/

public ArrayList getAreaInfo(AreaSearch areaSearch,String areaType){

ArrayList arr = null

StringBuffer sqlBuf = new StringBuffer(50)

String areaId = areaSearch.getAreaId()

//得到省市名称

if(areaType.equals("sheng")){

sqlBuf.append("select * from area where area_grandfather_id = area_id and area_id =area_father_id ")

}

//得到市名称

if(areaId != null &&areaType.equals("shi")){

sqlBuf.append("select * from area where area_grandfather_id = '"+areaId+"' and area_id=area_father_id and area_grandfather_id!=area_father_id")

}

//得到区县名称

if(areaId != null &&areaType.equals("qu")){

sqlBuf.append("select * from area where area_father_id = '"+areaId+"' and area_id != area_father_id" )

}

sqlBuf.append( " order by area_id ")

logger.warn("---sql:getAreaListSplit---"+sqlBuf)

CommonDAO dao = null

ResultSet rs = null

try{

dao = new CommonDAO(jndi)

rs = dao.query(sqlBuf.toString())

//读取结果集信息

arr = this.readDataListFromRs(rs)

}catch( Exception ex ){

ex.printStackTrace()

}finally{

dao.destroy()

dao=null

sqlBuf = null

}

return arr

}

}

你如何用实体框架,象HIBERNATE这样的ORM的时候,

首先考虑的肯定是BEAN实体类,也就是面向对象编程,面向对象 *** 作数据库了.

但是考虑到关联关系的时候,情况就复杂些了.

比如一对多的情况:

拿博客系统来说吧

一篇文章BLOG,肯定有一个BLOGID,这个BLOGID肯定是唯一的

BLOG(BLOGID,USERID,TITLE,CONTENT,MSGS)(博客ID,用户ID,标题,内容,评论)

现在有人对这个BLOG进行评论

评论MSG(MSGID,USERID,BLOG,MESSAGE)(评论ID,用户ID,博客,评论内容)

这有两个实体类,BLOG和MSG是一对多双向关联关系.

也就是说,根据这个BLOG可以知道这个BLOG下面所有的评论.

而某个MSG,肯定是对某一个BLOG进行评论的.

BLOG里面保存着评论的信息MSGS,MSGS肯定是个集合.

其中MSG里面保存着BLOG的信息.

实体类大概是上面那样.

下面就要建立关联关系的映射了.

一对多的关联关系的映射,主要体现在多的这一端,而多的这一端在数据库中体现就是外键.

也就是说,BLOG类中的MSGS是帖MSG来决定的,而数据库中,BLOG表肯定是没有MSG的任何字段信息.

但是MSG中肯定有BLOG实体类BLOGID.

有时候多个表也可以设计成一个BEAN.看情况设计喽.

建立楼主去研究下HIBERNATE里面的关联关系及其映射,

看实体类和数据库中表的详细情况.

要看你这个List的属性跟数据库的表的字段是怎么映射的呢?根据你的业务需求进行存储就好了啊。

如果理不清楚,说明你的数据结构设计有问题。先设计好数据库的结构,再设计java bean,二者的映射关系要弄清楚才好。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9891048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存