第二章 MyBatis增删改查及代码优化实操

一、新增

        01、插入一条数据

        第一步:在StudentMapper中定义insertStudent(Student student)方法

         第二步:在StudentMapper.xml中对接口进行实现

         第三步:在StudentMapperTest测试类中添加测试方法

        02、添加数据时获得自增的主键

        业务场景:当我们插入一条记录,并需要将插入成功的记录信息传递给后面的操作时,则需要考虑返回插入成功记录的主键。

        

 

         实例:插入一条学生记录并获取其主键id

       第一步:修改StudentMapper.xml,将insert标签增加useGeneratedKeys keyProperty属性

<!-- useGeneratedKeys 设置添加操作是否需要回填生成的主键 -->
<!-- keyProperty 设置回填的主键值赋值到参数对象的哪个属性 -->
 <insert id="insertStudent" useGeneratedKeys="true" keyProperty="stuId">
        insert into student(s_num,s_name,s_gender,s_age) 
        values(#{stuNum},#{stuName},#{stuGender},#{stuAge})
</insert>

       第二步:修改StudentMapperTest.java,当添加数据成功时,id自动回填至对象Student的属性stuId中。我们可通过getter()方法获得。

二、删除

        01、删除一条数据

        第一步:在StudentMapper中定义deleteStudent(String stuNum)方法

public int deleteStudent(String stuNum);

        第二步:在StudentMapper.xml中对接口方法进行“实现

<delete id="deleteStudent">
    delete from student where  s_num = #{stuNum};
</delete>

        第三步:在StudentMapperTest的测试类中添加测试方法

三、修改

        01、修改一条数据

        根据学生学号,修改其他字段信息

        第一步:在StudentMapper中定义updateStudent(Student student)方法

public int updateStudent(Student student);

        第二步:在StudentMapper.xml中对接口方法进行“实现

  <update id="updateStudent">
      update student set
         s_name = #{stuName},
         s_gender = #{stuGender},
         s_age = #{stuAge}
        where s_num = #{stuNum}
    </update>

        第三步:StudentMapperTest的测试类中添加测试方法

                 

                                                 

                 

        02、增删改常用属性

四、查询

        01、查询一个实体类对象

        根据学生学号,查询一条学生信息

        第一步:在StudentMapper中定义queryStudentByNum(String stuNum)方法

public Student queryStudentByNum(String stuNum);

        第二步:在StudentMapper.xml中对接口方法进行“实现

        第三步:StudentMapperTest的测试类中添加测试方法

 

         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​           报错!

 Cannot determine value type from string 'xxx'

原因:当实体使用有参构造函数时,会遍历有参构造参数个数,根据有参构造参数下标查找相应的数据库字段名称,根据有参构造字段类型以及数据库字段名称找类型处理器。然后使用TypeHandler来处理JavaType 与 JdbcType 之间的转换。当转换异常,就会报上述错误。

分析:在实体类Student中编写了有参构造器,其中未写字段stuId,但在StudentMapper.xml中的查询操作需要查询sid,此时在解析时出现异常,导致报错。

解决方案1)增加无参构造器
                  2)删除StudentMapper.xml中查询的数据库字段sid
,保证mapper.xml中查询的数据库字段属性的类型要和有参构造器的字段类型一一匹配;查询字段的个数要和有参构造器个数一样

 

        02、查询List集合

        03、查询单个数据

        04、多参数查询

        05、MyBatis获取参数值的方式

        06、返回类型为HashMap的查询

        07、select标签使用总结

五、MyBatis工具类封装

六、加入事物——优化

七、加入第三方连接池——优化

八、映射文件mapper.xml中标签的回顾与总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值