mybatis进行CRUD操作时返回值不为影响的条数,为null

11 篇文章 0 订阅

对应自己的情况多试试看,总有一种方法可以解决吧!

1、如果报期望的返回值为null而原始返回值类型为int的错误

则将Dao/mapper接口中的函数的返回值类型改为Integer,在方法调用时使用.intValue()方法转换为int就可以了。

2、配置返回为修改影响条数

修改jdbc连接如下即可:添加useAffectedRows=true配置。

jdbc:mysql://jdbc.host/{jdbc.db}?useAffectedRows=true
如果是串接在后面,可以使用&或者&
连接符号依据文件类型而定。

3、查看自己的代码是否有问题

在面向接口编程的.xml文件,即Dao/Mapper接口类的实现类(即Mapper.xml文件)中,看看标签名是否正确,CRUD操作对应各自的标签名。

<?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">

<!--namespace:绑定一个对应的Dao/Mapper接口,也可以说就是UserDao的实现类(面向接口编程)-->
<mapper namespace="com.kuang.dao.UserDao">
    <!--select查询语句-->
    <select id="getUserList" resultType="com.kuang.pojo.User">
        select * from mybatis.user
    </select>
    <select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">
        select * from mybatis.user where id=#{id}
    </select>
    <!--insert插入语句-->
    <insert id="addUser" parameterType="com.kuang.pojo.User" >
        insert into mybatis.user(id, name, pwd) VALUES (#{id},#{name},#{pwd});
    </insert>
    <!--update更新语句-->
    <update id="updateUser" parameterType="com.kuang.pojo.User">
        update mybatis.user set name=#{name} ,pwd=#{pwd} where id=#{id};
    </update>
    <!--delete删除语句-->
    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id=#{id};
    </delete>
</mapper>

4、对上述.xml文件的解释说明

(1)namespace

namespace中的包名要和Dao/mapper接口的包名一致!

(2)CRUD标签中的属性说明

●id: 就是对应的namespace中的方法名;
●resultType: Sql语句执行的返回值!
●parameterType: 参数类型!

增删改的返回值类型默认为影响的行数,不用添加resultType

(3)mybatis增删改查的操作步骤

1.编写接口中的抽象方法

2.编写对应的mapper.xml中的sql语句

3.测试(注意增删改需要提交事务)
sqlSession.commit();

 //增删改需要提交事务
    @Test
    public void test3(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
//        mapper.addUser(new User(4, "西部开源", "254655"));//这样直接添加也是可以成功的,注意id值不能重复
        Integer res = mapper.addUser(new User(6, "西部开源", "254655"));//null
        if(res.intValue()>0){
            System.out.println(res.intValue());
            System.out.println("插入成功");
        }
        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值