发表于: 2019-12-29 16:10:22
1 1248
任务小结:
任务一一共用了18天完成,步骤1到步骤16挺简单的,来的第一天基本就完成了。难就难在步骤17,这一步包含了很多的内容,Jdbc-JdbcTemplate-Mybatis,网上找了很多例子,走了不少弯路,出了很多bug,整合Spring和mybatis的时候不知道从哪下手,很蒙,整合之后感觉还是挺好理解的。步骤18-21在做步骤17的过程中都用到了,到了22、23步浪费了很多时间,在服务器上安装mysql浪费两天时间,找了好多例子没一个好用的,用navicat连远程又浪费一天时间,怎么连都连不上,不过好在最后问题都解决了,解决办法都写在日报里了,后面的步骤就很简单了,测试一下就行了。
任务一的收获:
一、Jdbc:是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。
JDBC的编程步骤 :
1、装载相应的数据库的JDBC驱动并进行初始化
初始化驱动类com.mysql.jdbc.Driver,Class.forName需要捕获ClassNotFoundException,Class.forName是把这个类加载到JVM中,加载的时候,就会执行其中的静态初始化块,完成驱动的初始化的相关工作。
2、建立JDBC和数据库之间的Connection连接
这里需要提供:
数据库所处于的IP:127.0.0.1 (这里是本机,如果连接其他电脑上的数据库,请改变该ip)
数据库的端口号:3306(mysql专用端口号)
数据库名称(根据你自己数据库中的名称填写)
编码方式 UTF-8
账号 root
密码(如果你在创建数据库的时候没有使用默认的账号和密码,请填写自己设置的账号和密码)
因为在进行数据库的增删改查的时候都需要与数据库建立连接,所以可以在项目中将建立连接写成一个工具方法,用的时候直接调用即可。
3、创建Statement或者PreparedStatement接口,执行SQL语句
在Statement中使用字符串拼接的方式,该方式存在句法复杂,容易犯错等缺点,字符串拼接方式的SQL语句是非常繁琐的,中间有很多的单引号和双引号的混用,极易出错。
与 Statement一样,PreparedStatement也是用来执行sql语句的与创建Statement不同的是,需要根据sql语句创建PreparedStatement。除此之外,还能够通过设置参数,指定相应的值,而不是Statement那样使用字符串拼接。
使用PreparedStatement时,他的SQL语句不再采用字符串拼接的方式,而是采用占位符的方式。“?”在这里就起到占位符的作用。这种方式除了避免了statement拼接字符串的繁琐之外,还能够提高性能。每次SQL语句都是一样的,数据库就不会再次编译,这样能够显著提高性能。
PreparedStatement接口创建的pstmt的set方法给占位符进行赋值。注意一点,这里的参数索引是从1开始的
在添加的过程的,如果添加的数据量比较大的话,可以用批量添加。 PreparedStatement接口提供了相应的批量操作的方法。
4、处理和显示结果
执行查询语句,并把结果集返回给集合ResultSet,利用While(ResultSet.next()){…}循环将集合ResultSet中的结果遍历出来。
5、释放资源
在JDBC编码的过程中我们创建了Connection、ResultSet等资源,这些资源在使用完毕之后是一定要进行关闭的。关闭的过程中遵循从里到外的原则。
二、JdbcTemplate:Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。
JdbcTemplate主要提供以下五类方法:
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;
call方法:用于执行存储过程、函数相关语句。
JdbcTemplate编程步骤 :
1、新建一个属性配置文件db.properties
username=root
password=xxxxxxxx
url=jdbc:mysql://localhost:3306/xxxxx?characterEncoding=UTF-8
driver=com.mysql.cj.jdbc.Driver
2、配置Spring配置文件applicationContext.xml
读取db.properties文件中的数据。
配置一个数据源(c3p0,或者其他的数据源),其中属性的值就是来自于db.properties
配置一个JdbcTemplate实例,并注入一个dataSource数据源
3、定义一个User实体类
提供getset方法,toString方法。
4、提供增删改查的接口和实现类
5、测试
启动ioc容器
ac=new ClassPathXmlApplicationContext("applicationContext.xml");
获取ioc容器中的JdbcTemplate实例
jdbcTemplate=(JdbcTemplate) ac.getBean("jdbcTemplate");
通过update插入、删除、修改数据
三、Mybatis:一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录
Mybatis编程步骤
引入依赖(pom.xml)
全局配置文件(mybatis-config.xml)
配置Map.xml(MyMapper.xml)
修改全局配置文件(mybatis-config.xml),配上MyMapper.xml
构建sqlSessionFactory(MybatisTest.java)
打开sqlSession会话,并执行sql(MybatisTest.java)
更多详细配置参考如下链接:
https://www.cnblogs.com/diffx/p/10611082.html
四、三者区别
JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
- 优点:运行期:快捷、高效
- 缺点:编辑器:代码量大、繁琐异常处理、不支持数据库跨平台
JdbcTemplate针对数据查询提供了多个重载的模板方法,你可以根据需要选用不同的模板方法.如果你的查询很简单,仅仅是传入相应SQL或者相关参数,然后取得一个单一的结果,那么你可以选择如下一组便利的模板方法
- 优点:运行期:高效、内嵌Spring框架中、支持基于AOP的声明式事务
- 缺点:必须于Spring框架结合在一起使用、不支持数据库跨平台、默认没有缓存
MyBatis的前身就是iBatis,iBatis本是apache的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名
总体来说 MyBatis 主要完成两件事情
- 根据JDBC 规范建立与数据库的连接
- 通过Annotaion/XML+JAVA反射技术,实现 Java 对象与关系数据库之间相互转化
MyBatis优缺点如下:
- 优点: 高效、支持动态、复杂的SQL构建, 支持与Spring整合和AOP事务、结果集做了轻量级Mapper封装、支持缓存
- 缺点:不支持数据库跨平台, 还是需要自己写SQL语句
五、整合过程
1)引入依赖
2)创建表
3)创建实体类
4)创建配置文件
5)创建dao层接口 和实现类
6)创建service层接口 和实现类
7)创建测试类
整合的代码在之前的日报里都有
六、总结
用了大概二十天完成了任务一,后面的任务要抓紧做了,最近状态不是很好,要调整好状态,继续完成之后的任务,以任务中的内容为主,再抽出一些时间学习基础。
明天计划的事情:开始任务二
评论