MyBatis增删改查

一、新增

1、插入一条数据

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

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

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

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

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

 实例:插入一条学生记录并获取其主键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()方法获得。

二、 删除

1 、删除一条数据

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

public int deleteStudent(String stuNum);

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

<delete id="deleteStudent">

    delete from student where  s_num = #{stuNum};

</delete>

三、 修改

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

第一步:在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的测试类中添加测试方法

四、查询

1、查询一个实体类对象

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

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

public Student queryStudentByNum(String stuNum);

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

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

报错!

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

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

解决方案1)增加无参构造器

                       在Student.java实体类中增加:

                        public Student() {

                             }

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

                      修改StudentMapper.xml中的查询方法,删除查询字段sid

                 

2、 查询List集合

例:查询所有学生记录

第一步:在StudentMapper中定义queryStudentByList()方法

public List<Student> queryStudentByList();

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

<select id="queryStudentByList" resultType="Student">

    select sid stuId, s_num stuNum,s_name stuName,s_gender stuGender,s_age  stuAge from student;

</select>

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

3、查询单个数据

例:查询学生总人数

第一步:在StudentMapper中定义queryStuCount()方法

public int queryStuCount();

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

  <!--_integer为int的别名  -->

    <select id="queryStuCount" resultType="_integer">

    select count(sid) from student;

  </select>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值