DateTime做主键的获取(一)

本文探讨了使用DateTime作为主键时,在查询过程中遇到的问题及其解决方案。主要问题包括:由于精度差异导致无法精确匹配日期时间,以及UI输入格式与数据库存储格式不一致。通过调整查询语句并使用转换函数解决了这些问题。

前不久,做了一个表,是DateTime做主键的(实时信息).

出现的问题:

唯一的一条数据查不出. (现在以数据字段叫做 RealDate为例)

第一步:

where RealDate='2005-02-02'

这样,就查不出.因为一定要精确到毫秒(数据库默认的是毫秒).

发生这个问题的原因是:从界面上的日历控件得到的值过于粗略.('2005-02-02' 来自UI)

第二步:

写成 where RealDate='2007-12-02 12:20:12'

还是查不出.因为数据格式不匹配.问题是来自UI的数据和数据库的数据格式不匹配.

第三步:

Convert(varchar(19),RealDate,121) = '2007-12-02 12:20:12'

这次可以正常查的出啦.

好的,购物车功能般需要以下几个表:用户表、商品表、购物车表。其中,用户表和商品表是系统已经存在的表,购物车表是需要我们自己创建的表。 1. 创建购物车表 购物车表需要包含以下字段:用户ID、商品ID、商品数量、创建时间、更新时间。可以使用以下SQL语句创建购物车表: ```sql CREATE TABLE `shopping_cart` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `product_id` bigint(20) NOT NULL COMMENT '商品ID', `quantity` int(11) NOT NULL COMMENT '商品数量', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='购物车表'; ``` 2. 创建实体类 使用MybatisPlus可以自动生成实体类,或者手动创建实体类。购物车实体类可以定义如下: ```java public class ShoppingCart { private Long id; private Long userId; private Long productId; private Integer quantity; private Date createTime; private Date updateTime; // 省略getter和setter方法 } ``` 3. 创建Mapper接口 使用MybatisPlus可以自动生成Mapper接口,或者手动创建Mapper接口。购物车Mapper接口可以定义如下: ```java public interface ShoppingCartMapper extends BaseMapper<ShoppingCart> { } ``` 4. 实现购物车功能 实现购物车功能需要编写以下几个方法: - 添加商品到购物车 ```java public void addProductToCart(Long userId, Long productId, Integer quantity) { ShoppingCart shoppingCart = new ShoppingCart(); shoppingCart.setUserId(userId); shoppingCart.setProductId(productId); shoppingCart.setQuantity(quantity); shoppingCart.setCreateTime(new Date()); shoppingCart.setUpdateTime(new Date()); shoppingCartMapper.insert(shoppingCart); } ``` - 从购物车中删除商品 ```java public void removeProductFromCart(Long userId, Long productId) { QueryWrapper<ShoppingCart> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", userId).eq("product_id", productId); shoppingCartMapper.delete(queryWrapper); } ``` - 更新购物车中商品的数量 ```java public void updateProductQuantity(Long userId, Long productId, Integer quantity) { QueryWrapper<ShoppingCart> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", userId).eq("product_id", productId); ShoppingCart shoppingCart = new ShoppingCart(); shoppingCart.setQuantity(quantity); shoppingCart.setUpdateTime(new Date()); shoppingCartMapper.update(shoppingCart, queryWrapper); } ``` - 获取购物车列表 ```java public List<ShoppingCart> getShoppingCartList(Long userId) { QueryWrapper<ShoppingCart> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", userId); return shoppingCartMapper.selectList(queryWrapper); } ``` 以上就是使用MybatisPlus实现购物车功能的步骤。需要注意的是,由于MybatisPlus封装了很多基本的CRUD操作,因此可以大大简化我们的开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值