MyBatis 是一个持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO,为数据库中的记录。

1.Mybatis默认是手动提交事务的,JDBC默认是自动提交事务的。

@Test

public void testInsert() throws Exception {

SqlSession session = null;

try{

session = MyBatisUtils.openSession();

Goods goods = new Goods();

goods.setTitle("方便面");

goods.setQuality("500g");

goods.setCost(20元);

// insert ()方法返回值代表本次成功插入的记录总数

int num = session.insert("goods.insert", goods);

session.commit();  //提交事务

System.out.println(goods.getGoodsId());

}catch(Exception e){

if(session != null){

session.rollback();  //回滚事务

}

throw e;

}finally{

MyBatisUtils.closeSession(session);

}

}

2.Mapper未在mybatis核心配置文件–mybatis-config.xmll注册

报错:org.apache.ibatis.binding.BindingException: Type interface com.wen.dao.UserDao is not known to the MapperReqistry

解决办法:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<environments default="development">

<environment id="development">

<transactionManager type="JDBC"/>

<dataSource type="POOLED">

<property name="driver" value="com.mysql.driver"/>

<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8"/>

<property name="username" value="root"/>

<property name="password" value="123456"/>

</dataSource>

</environment>

</environments>

<!--    每一个Mapper.xml文件必须在mybatis的核心配置文件中注册-->

<mappers>

<mapper resource="com/wen/dao/UserMapper.xml"></mapper>

</mappers>

</configuration>

3. Mybatis在初始化对象时,需要无参构造进行pojo属性的加载。而我在生成pojo类时创建了有参数的构造方法。在简单的Dao中调用时是没有问题的,但是如果使用Mybatis框架根据接口定义创建接口的动态代理对象(代理对象的方法体如Dao中方法体的实现)就会报错。

解决办法:去掉pojo类中的有参构造方法,使用无参构造方法初始化对象。

4.抽象类不能用jdk动态代理

因为jdk动态代理生成的代理类,会继承 Proxy 类,由于 Java 无法多继承,所以无法对类进行代理,抽象类本质上也是类,不是接口,proxy生成代理类过程中,会校验传入的class是否为接口。

MyBatis常见问题解答相关推荐

  1. CP20常见问题解答

    CP20常见问题解答 CP20常见问题解答 注:若您对CP20用途不十分了解,请参考前面HC10的问答 Q)基于服务器的解决方案都有哪几种?各有什么特点? Q)CP20的usb端口是否会成为资料外泄的 ...

  2. Delphi XE5 常见问题解答

    Delphi XE5 常见问题解答 有关于新即时试用的问题吗?请看看 RAD Studio 即时试用常见问答. 常见问题 什么是 Delphi? Embarcadero? Delphi? XE5 是易 ...

  3. Internet Explorer 8 Beta2 常见问题解答

    Internet Explorer 8 Beta2 常见问题解答<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:o ...

  4. 海康威视摄像头安装插件检测不到_海康威视摄像机常见问题解答

    海康威视摄像机常见问题解答 1.忘记摄像机IP地址怎么办? ①可以通过设备网络搜索工具SADP在线搜索 ②可以使用客户端4200在线搜索功能 ③在设备和PC开启UPNP功能时,可以通过PC中网络发现查 ...

  5. abaqus python二次开发攻略_Abaqus有限元分析常见问题解答与实用技巧 12天后上架...

    Abaqus有限元分析常见问题解答与实用技巧已印刷完毕,1-2天后上架,先睹为快.现在某些网站上的售卖信息,不靠谱.温馨提示:封底无防伪标均为盗版! 序  言 Abaqus是是国际上先进的大型通用非线 ...

  6. PhpExcel中文帮助手册|PhpExcel基本使用方法及常见问题解答

    为什么80%的码农都做不了架构师?>>>    一.介绍一下PHPExcel的基本使用方法 include 'PHPExcel.php'; include 'PHPExcel/Wri ...

  7. c语言中removeDir的相反函数,C语言编程常见问题解答之常用函数的包括文件.doc

    C语言编程常见问题解答之常用函数的包括文件 C语言编程常见问题解答之常用函数的包含文件(1) 作者:unknown 更新时间: 2005-05-10 函数 包含 类别 功能 _atold math.h ...

  8. MPLS是如何工作?MPLS的完整指南和常见问题解答

    MPLS是如何工作?MPLS的详细手册和常见问题解答 MPLS代表什么? MPLS代表多协议标签交换. 什么是MPLS? 当数据从一个网络节点传输到另一个网络节点时,它是一种在电信网内路由流量的机制. ...

  9. c语言中指针往内存写值,C语言编程常见问题解答之指针和内存分配

    指针为C语言编程提供了强大的支持--如果你能正确而灵活地利用指针,你就可以直接切入问题的核心,或者将程序分割成一个个片断.一个很好地利用了指针的程序会非常高效.简洁和精致. 利用指针你可以将数据写入内 ...

最新文章

  1. 三元组损失 Triplet Loss及其梯度
  2. 【Flask项目】sqlalchemy原生sql查询,返回字典形式数据
  3. wxWidgets 编译 ICON 资源
  4. 2013年4月27日星期六
  5. linux加载虚拟sriov网卡,如何配置BroadCOM网卡的SR-IOV功能
  6. localdatetime转化为date_为啥你用@JsonFormat注解时,LocalDateTime会反序列化失败?
  7. sql服务找不到服务器,我找不到SQL服务管理器
  8. PHP 设计模式之数据对象映射模式
  9. Prometheus Querying Function rate() vs irate()
  10. 定时器mia是什么意思_MIA的完整形式是什么?
  11. 使用FSO修改文件夹的名称
  12. OpenCV 4.x 中请别再用HAAR级联检测器检测人脸!有更好更准的方法
  13. git推送项目到码云(gitee)
  14. 四种常见排序算法----php代码实现
  15. qq群管机器人php,常用几款QQ群管机器人软件功能和体验对比
  16. 51单片机 16路抢答 显示在 点阵 普中 V2
  17. 测试行业4年经验,面试进了阿里,二个月后我果断选择裸辞...
  18. python远程调用摄像头_教你如何利用python调用摄像头
  19. 走ORACLE后门cusor_sharing的问题
  20. 2022中科院自动化所人工智能暑期学校(部分内容)

热门文章

  1. 一个发放邮件工资条的程序
  2. 什么样的公司可以申请高新技术企业?
  3. Java8 将List转换为用逗号隔开的字符串
  4. Altium Designer生成钢网文件
  5. Docker 容器start | restart | stop
  6. 基于二叉查找树的图书影碟租赁管理系统c#实现(控制台)
  7. [OpenWRT]极路由B70(HC5962)刷OpenWRT笔记(一)
  8. 零入门kubernetes网络实战-7->Mac环境下为虚拟机磁盘空间进行扩容
  9. 什么是视频互动直播,你会如何介绍
  10. WordPress插件 Hide My WP 没人知道你使用的是WP系统[更新v3.0]