(java笔记)框架——mybatis_注解开发

本文介绍了MyBatis使用注解进行单表CURD操作的方法,强调了如何通过@Option和@Insert获取自增主键,提醒在CUD操作中不要忘记提交事务,并指出注解开发的DAO接口不支持方法重载的问题。同时提到了接口编写和测试的相关内容。
摘要由CSDN通过智能技术生成

除了xml的映射方式,mybatis还提供了使用注解的方式来实现pojo对象和数据表之间的关联映射。

单表的CURD:

mybatis中提供了@Select、@Insert、@Update、@Delete等用于CURD和@Param传递参数的常用注解。相比在xml文件中使用各种mapper子标签,使用注解的方式会更加简单而且不会增加系统开销,注解开发方式一般将注解和sql语句直接写在接口中。

注意的地方:

1.返回insert自增的键值

@Option()和@Insert()的使用:

 @Options(useGeneratedKeys = true,keyProperty ="id",keyColumn = "id"),用于获取数据库表中自增的主键值,并返回到pojo对象的对应属性
     /*
                useGeneratedkey:设置是否使用JDBC的getGeneratedKeys()方法获取主键并赋值到keyProperty设置的领域模型属性中

                keyProperty:接收返回值的实体属性;

                keyColumn:数据表中的列;
     */

2.做CUD时忘记提交事务session.commit();

进行需要更新数据库信息的操作需要提交事务,不然数据库中信息不更新

典型Error:

做增删改时,控制台打印的信息有更新,而数据库中信息无更新,就是忘了提交事务

解决:

1)在调用方法后加入代码session.commit();提交事务即可。

2)或者在创建session时将openssion();改为openssion(true),自动提交事务。

3.注解开发dao中的方法不支持重载

Error: Error parsing SQL Mapper Configuration. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for person.cozar.dao.BookMapper.updateBook

如果dao中设置了方法重载,则编译时builder会报错,因为mapper子标签中的id具有唯一性(回想xml方式编写<select>等子标签时,他们的id是和dao中的方法名是唯一对应的)

接口的编写:

package person.cozar.dao;

import org.apache.ibatis.annotations.*;
import person.cozar.domain.Book;

import java.util.List;
/*
在接口中通过注解的方式开发,无需写接口的实现类,也无需再写mapper的xml文件,简化了开发也无需增加系统开销
 */
public interface BookMapper {

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值