使用Mybatis查询插入数据(insertSelect)无作用

目录

可能原因:

Mybatis错误:

解决方法:

方法演示:

启动类扫描包错误

解决方法:

MyBatis配置错误

MyBatis代码错误

数据库错误

报错信息:

错误原因:


客户端操作数据库的时候,(增删改查)无作用,可能是mybatis的错误,仔细查看这些方面,可能会有发现

可能原因:

Mybatis错误:

1、有多个Mybatis文件,如多个UserDao.xml。系统不知道运行哪个

解决方法:

Ctrl+点击调用的方法(自动回到所用接口的方法),再Ctrl点击接口方法,回到相应Mybatis的xml

方法演示:

可以看到,我这里有之前没有更新的xml文件,原因是用mybatis-generator工具创建过一次,没有删干净。因此,把另一个删掉。

启动类扫描包错误

解决方法:

在启动类上配置放置实体类接口的包,DAO包,使用@MapperScan(“dao包名”);

MyBatis配置错误

application.yml正确的Springboot项目中Mybatis应该是:

mybatis:
  configuration:
    map-underscore-to-camel-case: true #数据库表中的下划线自动那个转换成驼峰映射。
  mapper-locations: classpath:mybatis/mapper/**/*.xml #mapper文件的路径,这个路径下面的mapper.xml会被自动加载成mybatis的映射文件

MyBatis代码错误

正确的Mybatis的xml应像如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mojingyi.market.dao.GoodsDao">
  <resultMap id="BaseResultMap" type="com.mojingyi.market.pojo.entity.Goods">
    <id column="goods_id" jdbcType="INTEGER" property="goodsId" />
    <result column="title" jdbcType="VARCHAR" property="title" />
    <result column="img" jdbcType="VARCHAR" property="img" />
    <result column="good_type_id" jdbcType="INTEGER" property="goodTypeId" />
    <result column="orginal_price" jdbcType="DOUBLE" property="orginalPrice" />
    <result column="price" jdbcType="DOUBLE" property="price" />
    <result column="on_sale" jdbcType="VARCHAR" property="onSale" />
    <result column="detail" jdbcType="VARCHAR" property="detail" />
    <result column="count" jdbcType="INTEGER" property="count" />
    <result column="merchant_name" jdbcType="VARCHAR" property="merchantName" />
    <result column="evaluation_count" jdbcType="INTEGER" property="evaluationCount" />
  </resultMap>
  <sql id="Base_Column_List">/*这个等于将数据库的数据封装,起个别名,用于整个xml引入数据库数据*/
    goods_id, title, img, good_type_id, orginal_price, price, on_sale, detail, `count`, 
    merchant_name, evaluation_count
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">/*此处的id与其他地方的需要一致,如果mybatis不起作用可能是名字不同*/
    select 
    <include refid="Base_Column_List" />
    from goods
    where goods_id = #{goodsId,jdbcType=INTEGER}
  </select>

</mapper>

数据库错误

报错信息:

如果后台会报这个错误,客户端就无法操作到数据库,看起来就是mybatisdao.xml没有作用。

java.sql.SQLException: Incorrect string value: '\xE8\xA5\xBF\xE8\xA5\xBF' for column 'merchant_name' at row 1

错误原因:

1、数据库中的数据类型与实体类中的数据类型,或与mybatisDao.xml中的数据类型不一致

<resultMap id="BaseResultMap" type="com.mojingyi.market.pojo.entity.Goods">
    <id column="goods_id" jdbcType="INTEGER" property="goodsId" />/*jdbctype与数据库中的不一致*/

2、客户端输入的数据类型与数据库定义的数据类型不一致。此时注意输入。

3、数据库建立的时候的编码方式设置不是UTF-8,这时如果输入中文,后台也会报错。

解决方法:

修改数据库编码方式

alter table goods default character set utf8;

已经建好的数据库如果这样不起作用,就修改报错参数编码

alter table goods change merchant_name merchant_name varchar(255) character set utf8;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值