发表于: 2019-11-17 21:58:05
1 991
今天做了什么
1.maven突然报错,百度了很久说是仓库问题,修改idea中的仓库配置但是并不能解决,只好重装了maven,
后来才发现是仓库中自己配置项(maven自身的Plugins)有问题
其中Plugins下全部爆红,修改配置仓库无效,必须把下面的相关配置包清除如何重新下载maven自己的配置依赖项
maven安装流程
官网下载、解压
修改环境变量
win +R
修改F:\maven\apache-maven-3.5.4\conf中的setting.xml文件
添加自定义仓库(必须在相应位置创建相关文件夹)
配置阿里云中央仓库
idea中maven相关设置
新建项目maven依赖
自此加深了对maven使用的理解;
可在https://mvnrepository.com/中搜索相关pom.xml的maven依赖
2.学习mybaits
接口层---和数据库交互的方式
MyBatis和数据库的交互有两种方式:
a.使用传统的MyBatis提供的API;
b. 使用Mapper接口
使用Mapper接口
MyBatis 将配置文件中的每一个<mapper> 节点抽象为一个 Mapper 接口,而这个接口中声明的方法和跟<mapper> 节点中的<select|update|delete|insert> 节点项对应,即<select|update|delete|insert> 节点的id值为Mapper 接口中的方法名称,parameterType 值表示Mapper 对应方法的入参类型,而resultMap 值则对应了Mapper 接口表示的返回值类型或者返回结果集的元素类型
数据处理层
数据处理层可以说是MyBatis 的核心,从大的方面上讲,它要完成三个功能:
a. 通过传入参数构建动态SQL语句;
b. SQL语句的执行以及封装查询结果集成List<E>
2.1.参数映射和动态SQL语句生
动态语句生成可以说是MyBatis框架非常优雅的一个设计,MyBatis 通过传入的参数值,动态地构造SQL语句,使得MyBatis 有很强的灵活性和扩展性。
参数映射指的是对于java 数据类型和jdbc数据类型之间的转换:这里有包括两个过程:查询阶段,我们要将java类型的数据,转换成jdbc类型的数据,通过 preparedStatement.setXXX() 来设值;另一个就是对resultset查询结果集的jdbcType 数据转换成java 数据类型。
SQL语句的执行以及封装查询结果集成List<E>
动态SQL语句生成之后,MyBatis 将执行SQL语句,并将可能返回的结果集转换成List<E> 列表。MyBatis 在对结果集的处理中,支持结果集关系一对多和多对一的转换,并且有两种支持方式,一种为嵌套查询语句的查询,还有一种是嵌套结果集的查询。
MyBatis的主要的核心部件有以下几个:
SqlSession
作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能
Executor
MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
StatementHandler
封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参
数、将Statement结果集转换成List集合。
ParameterHandler 负责对用户传递的参数转换成JDBC Statement 所需要的参数,
ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合;
TypeHandler 负责java数据类型和jdbc数据类型之间的映射和转换
MappedStatement MappedStatement维护了一条<select|update|delete|insert>节点的
封 装,
SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封
装到BoundSql对象中,并返回
BoundSql 表示动态生成的SQL语句以及相应的参数信息
Configuration MyBatis所有的配置信息都维持在Configuration对象之中。
遇到的问题:
maven自身的配置相关包报错,原因为仓库(可能为默认仓库在C盘下,也可能能为自定义目录)配置包版本有冲突
解决方法:把相关配置包清空重新下载即可
明天要做的事情
实现JdbcTemplate的简单的增删改查,继续学习spring 和mybaits。
今日感想:
配置问题远远超过代码问题,已经为配置问题已经花费了大量时间了
感觉自己的学习方法有待改进,jdbcJdbcTemplate相关不知道看哪个,博客总是写的太复杂或者不够详细
对mabaits并不是很理解,可能写过相关代码以后会好很多
另外发现自己没有及时把报错信息记录下来,习惯不是很好,在以后的学习中慢慢改变
评论