编写java商品系统简单的购物车功能板块:
1.maven框架使用mybatis的mapper代理开发。
2.数据库表jsu_1存放的商品信息
3.jsu_1_shopcar存放购物车的商品信息,
4.代码逻辑:将须下单商品通过方法拿出来,下单处理后,将商品变化的数量更新jsu_1的数据,同时将下单的商品数量信息存入jsu_1_shopcar表。
代码实际运行出现了如下问题:
以下两行代码报错——表示price的值为空
此前price处是直接goods.getPrice来获取的,问题出现后我以为是代码运行快啦,系统还未获取到值,直接运行完了,但我修改代码后,问题始终存在。
shopcar shopcar = new shopcar(name,price,number);
mapper.addshopcar(shopcar);
以下是改板块的实现代码:
public class Buy extends BasePurchase {
@Override
public void buy(){
try {
System.out.println("输入商品名及须下单数量:");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int number = scanner.nextInt();
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
jsu_1Mapper mapper = sqlSession.getMapper(jsu_1Mapper.class);
goods goods = mapper.selectByname(name);
if(goods!=null){
String price = goods.getPrice();
if (price != null) {
int Number = goods.getNumber();
if (goods.getNumber()>=number){
shopcar shopcar = new shopcar(name,price,number);
mapper.addshopcar(shopcar);
goods goods1 =new goods("","",Number-number);
mapper.update(goods1);
System.out.println("下单成功");
}else {
System.out.println("库存不足");
}
} else {
System.out.println("商品价格为空");
}
}else{
System.out.println("商品不存在");
}
sqlSession.commit();
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以下是报错信息:
```java
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'price' cannot be null
### The error may exist in mapper\jsu_1Mapper.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: INSERT INTO jsu.jsu_1_shopcar(name,price,number)VALUES(?,?,?);
### Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'price' cannot be null
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:152)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)
at com.sun.proxy.$Proxy4.addshopcar(Unknown Source)
at implementation.shop.Buy.buy(Buy.java:36)
at page.ShopPage.shoppage(ShopPage.java:36)
at implementation.manage.UserEnter.userenter(UserEnter.java:37)
at page.Sign_in.sign_in(Sign_in.java:21)
at Main.main(Main.java:4)
Caused by: java.sql.SQLIntegrityConstraintViolationException: Column 'price' cannot be null
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
... 10 more
求路人指点迷津