通过commons-DBUtils和commons-BeanUtils操作数据库以及根据返回集赋值给bean对象及其外键
通过commons-DBUtils和commons-BeanUtils操作数据库以及根据返回集赋值给bean对象及其外键
需要用到的jar包:
我在这里遇到一些问题,使用beanutils的beanutil.populate()方法,报缺少commons-collections.FastHashMap类,
原因解释:
解决方法:
根据官方描述,如果使用的时1.7.x版本或者1.8.x版本的话,下载下来就是内含三个主要jar包的,所以,导入直接就可使用。但是,由于我所使用的时1.9.x(我用的1.9.4版本)的,所以,下载下来只有一个jar包,因此,时缺少所依赖的collections的jar包的,我们根据官方提供的连接进行下载。另外,一定要注意beanutils和依赖包collections的版本对应问题。我们可以查看官网:找到dependencies依赖一栏,可以看到beanutils所依赖的两个jar包及其所对应的版本,我们点击对应链接进行下载即可(BeanUtils 1.9.4下载collections包的3.2.2版本)。(一定要下载指定版本!!!!)
官网网址:https://commons.apache.org/proper/commons-beanutils/
collections3.2.2:https://commons.apache.org/proper/commons-collections/
logging1.2:https://commons.apache.org/proper/commons-logging/download_logging.cgi
daoImpl中的代码:
package com.gec.store.service.impl;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.junit.Test;
import com.gec.store.bean.CartItem;
import com.gec.store.bean.Product;
import com.gec.store.dao.CartItemDao;
import com.gec.store.util.C3P0Util;
import com.gec.store.util.DBUtil;
/**
* @author: Lemon E-mail:1027880379@qq.com
* @version:
* @Since: Created in 2022年6月24日 上午12:07:44
* @Description:
*/
public class CartItemDaoImpl extends DBUtil<CartItem> implements CartItemDao {
/**
* 购物车表中是否有uid、pid对应的商品记录
*
* @throws SQLException
*/
@Override
public CartItem hasCartItem(String uid, String pid) throws SQLException {
String sql = "SELECT"
+ " c.id,"
+ " c.uid,"
+ " c.pid,"
+ " c.c_total AS total,"
+ " c.c_count AS count,"
+ " p.pname,"
+ " p.market_price,"
+ " p.shop_price,"
+ " p.pimage,"
+ " p.pdate,"
+ " p.is_hot,"
+ " p.pdesc,"
+ " p.pflag,"
+ " p.cid "
+ "FROM "
+ " cart c "
+ " JOIN product p ON c.pid = p.pid "
+ "WHERE "
+ " c.uid = ?"
+ " AND c.pid = ?";
QueryRunner runner = new QueryRunner(C3P0Util.getDs_poole());
// 根据sql的列字段,返回一个map结果集,Map<字段名,属性>
Map<String, Object> resultMap = runner.query(sql, new MapHandler(), uid, pid);
if (resultMap == null) {
return null;
}
try {
// 首先把结果集中的购物车信息,填充到cartItem对象中,
CartItem cartItem = new CartItem();
BeanUtils.populate(cartItem, resultMap);
// 从结果集中,把商品的信息,填充到product对象中,
Product product = new Product();
BeanUtils.populate(product, resultMap);
// 将填充玩的product对象赋值给cartItem的外键
cartItem.setProduct(product);
return cartItem;
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
return null;
}
}
}