实现自定义框架过程中遇到的问题及解决方案:

1、执行 Resources.class.getClassLoader().getResourceAsStream(path) 方法无法获得去字节输入流

解决方案:

- path 可能出错,检查配置文件名正确,例如数据库配置xml 为 path = “SqlMapConfig.xml”

- 检查target/classes文件夹下是否有要读的xml资源文件,如果没有检查pom.xml是否有<packaging>pom</packaging>, 如果有此内容,打包方式改为<packaging>jar</packaging>, 如果通过pom方式打包,不会生成资源文件到target/classes目录下,修改后 执行mvn compile 重新编译

- 以上两步如果都没问题,应该就可以正常读到输入流了

2,执行configuration.getDataSource().getConnection()方法一直无法建立数据库连接

解决方案:

- 可能是mysql-connector-java=版本不正确,经实际测试发现 5.1.44这个版本是OK的

- 检查jdbcUrl、用户名,密码是否正确,经仔细查找发现我之前写的jdbcUrl错误,修改后:jdbc:mysql://localhost:3306/lagou?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull

- 如果上面两步依然不能建立连接,检查是否数据库没有远程访问权限,可以执行

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'root' WITH GRANT OPTION;

FLUSH PRIVILEGES;   // 开启远程访问权限

- 以上多做了应该能建立连接了

3:出现java.lang.IllegalArgumentException: argument type mismatch

解决方案

--检查数据库的字段和实体类类型是否一致比如int,varchar(String)等。

--//使用反射,根据数据库字段和实体类对应,完成封装
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(columnName, classTypeClass);
Method writeMethod = propertyDescriptor.getWriteMethod();
writeMethod.invoke(o,value);

这里使用的方法getDeclaredFiled 仅能获取类本身的属性成员(包括私有、共有、保护) 注意和xml内的占位值要和实体类属性一致

Invoke内的值的类型注意保持一致或者为他封装类比如integer和int。

4:注意

List<User> users = sqlSession.selectList("user.findAll");
一定要和sqlMapConfig.xml,UserMapper.xml,以及dao层内的namespce和方法名一致大小写也必须一致!!!

其别名
<!--给实体类的全限定类名给别名-->
<typeAliases>
<!--给单独的实体起别名-->
<!-- <typeAlias type="com.badfisher.pojo.User" alias="user"></typeAlias>-->
<!--批量起别名:该包下所有的类的本身的类名:别名还不区分大小写-->
<package name="com.badfisher.pojo"/>

手写Mybatis代码实现会出现的问题的更多相关文章

  1. 要想精通Mybatis?从手写Mybatis框架开始吧!

    1.Mybatis组成 动态SQL Config配置 Mapper配置 2.核心源码分析 Configuration源码解析 SqlSessionFactory源码解析 SqlSession源码解析 ...

  2. 手写MyBatis ORM框架实践

    一.实现手写Mybatis三个难点 1.接口既然不能被实例化?那么我们是怎么实现能够调用的? 2.参数如何和sql绑定 3.返回结果 下面是Mybatis接口 二.Demo实现 1.创建Maven工程 ...

  3. .net学习之Session、Cookie、手写Ajax代码以及请求流程

    1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?Socket(套接字),通信的语法是HTTP ...

  4. 手写mybatis框架笔记

    MyBatis 手写MyBatis流程 架构流程图 封装数据 封装到Configuration中 1.封装全局配置文件,包含数据库连接信息和mappers信息 2.封装*mapper.xml映射文件 ...

  5. 手写MyBatis流程

    MyBatis 手写MyBatis流程 架构流程图 封装数据 封装到Configuration中 1.封装全局配置文件,包含数据库连接信息和mappers信息 2.封装*mapper.xml映射文件 ...

  6. 手写mybatis框架-增加缓存&事务功能

    前言 在学习mybatis源码之余,自己完成了一个简单的ORM框架.已完成基本SQL的执行和对象关系映射.本周在此基础上,又加入了缓存和事务功能.所有代码都没有copy,如果也对此感兴趣,请赏个Sta ...

  7. 框架源码系列十二:Mybatis源码之手写Mybatis

    一.需求分析 1.Mybatis是什么? 一个半自动化的orm框架(Object Relation Mapping). 2.Mybatis完成什么工作? 在面向对象编程中,我们操作的都是对象,Myba ...

  8. 带码农《手写Mybatis》进度3:实现映射器的注册和使用

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!

  9. 快速开发框架(FDMS)新增1000个对外接口都不须要手写一行代码

    一个大型系统难免会跟其它系统有数据交换,这里就要提供数据接口给外部系统. 曾经在一家智能终端设备的公司上班.那段时间的主要工作就是写接口.接口须要与手机.手持设备.系统管理软件等进行数据交换.总结了一 ...

  10. 从零搭建Spring Boot脚手架(4):手写Mybatis通用Mapper

    1. 前言 今天继续搭建我们的kono Spring Boot脚手架,上一文把国内最流行的ORM框架Mybatis也集成了进去.但是很多时候我们希望有一些开箱即用的通用Mapper来简化我们的开发.我 ...

随机推荐

  1. nuxt.js的导航守卫

    一.使用router.js 重构项目时还行使用原来的router.js也是可以的,需要下载插件惊醒配置,这时候vue-cli中怎么用,nuxt中就怎么使用导航守卫,几乎一样 二.使用nuxt.js 1 ...

  2. C的基础常识

    C是可移植性语言,因此可以在许多环境中使用,包括UNIX.Linux.MS-DOS.Windows和Macintosh OS. 使用C语言编写的内容的文本,称为源代码文件(source code fi ...

  3. Python测试——安装篇总结

    测试用到的工具自己知道的有: 写脚本类:sublime  ,PyCharm,Eclipse+PyDev,目前我知道的只有这么多,大家知道的肯定还有很多,欢迎留言哈 录制脚本类:火狐自带的seleniu ...

  4. Tomcat后端无法返回数据

    以前使用的是Tomcat8和9,这次使用的10怎么就无法返回数据呢? 一开始以为是因为这个错误:Using CATALINA_OPTS:   "" 但是后来发现怎么尝试都无法取出这 ...

  5. Vue Yarn npm nodejs - 安装、配置

    一.安装 node.js 1.从node.js官网下载并安装,安装时,安装路径可以修改为非C盘 2.使用 node --version 命令在 CMD 中查看 nodejs 安装的版本,显示了安装的版 ...

  6. Matlab字体设置中找不到字体的解决方法(转载)

    Matlab字体设置中找不到字体 Matlab默认的字体实在不好看,一般都需要重新设置字体. 在其字体设置中有些字体不能同时支持中文和英文,我在之前的博客中说过,如何为Matlab设置一款好看的同时兼 ...

  7. jxg项目Day5-关于项目打包

    springboot项目中手动打包,加以下依赖: <parent> <artifactId>spring-boot-dependencies</artifactId> ...

  8. Oracle入门- 数据库操作相关脚本

    1. 创建表 1 CREATE TABLE SYS_NOTICE 2 ( 3 GUID CHAR(32) NOT NULL, 4 TITLE VARCHAR2(128) NOT NULL 5 ); 6 ...

  9. 读书笔记<<世界是部金融史>>

    1.权力只对来源负责.权力只会对其来源负责--孟德斯鸠<论法的精神> 2.能违反的是纪律,不能违反的是规律.人自然要遵从人性规律. 3.在金融市场中有一个法则,如果市场认为一件事是真的,那 ...

  10. NVT模拟时出现水分子空洞,以及NPT时盒子收缩的原理

    NVT出现水分子空洞,以及NPT时盒子收缩的原理: For a periodic system, constant pressure is the only way to equilibrate de ...