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

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

目录

可能原因:

Mybatis错误:

解决方法:

方法演示:

启动类扫描包错误

解决方法:

MyBatis配置错误

MyBatis代码错误

数据库错误

报错信息:

错误原因:


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

可能原因:

Mybatis错误:

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

解决方法:

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

方法演示:

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

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

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

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

启动类扫描包错误

解决方法:

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

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

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;

今天的文章使用Mybatis查询插入数据(insertSelect)无作用分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33026.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注