发表于: 2019-12-29 16:10:22

1 1247


任务小结:

    任务一一共用了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 主要完成两件事情

  1. 根据JDBC 规范建立与数据库的连接
  2. 通过Annotaion/XML+JAVA反射技术,实现 Java 对象与关系数据库之间相互转化

MyBatis优缺点如下:

  • 优点: 高效、支持动态、复杂的SQL构建, 支持与Spring整合和AOP事务、结果集做了轻量级Mapper封装、支持缓存
  • 缺点:不支持数据库跨平台, 还是需要自己写SQL语句


  五、整合过程


  1)引入依赖

  2)创建表

  3)创建实体类

  4)创建配置文件

  5)创建dao层接口 和实现类

  6)创建service层接口 和实现类

  7)创建测试类


  整合的代码在之前的日报里都有


  六、总结

  用了大概二十天完成了任务一,后面的任务要抓紧做了,最近状态不是很好,要调整好状态,继续完成之后的任务,以任务中的内容为主,再抽出一些时间学习基础。


  明天计划的事情:开始任务二


返回列表 返回列表
评论

    分享到