发表于: 2019-08-28 23:24:50

1 3409


今天完成的事:
1、查看了Java项目的目录结构。
分别是,显示层jsp、控制层saction、服务层service、数据访问层dao、持久层mybatis、数据层mysql。
显示层:人接交互,主要用于数据的展示和数据的录入。
控制层:总指挥,接受用户提交的请求,根据请求的参数调用响应的服务类和需展示的显示层。
服务层:负责业务逻辑处理,过程中需要对数据库进行操作的话,不亲自动手,通过调用dao来实现。
数据访问层:顾名思义,就是对数据对象进行增删改查操作。
持久层:负责把数据对象持久化到数据库。
数据层:指数据库这个层面。
而IDEA中的Java目录结构、各自存放的文件如下所示,其中的Java文件夹下还分为dao、domain、servlet。dao中放置相关的文件,domain我理解的是放置实体类,servlet则是web中的相关文件,这里暂不涉及。
   
2、查看了Java中的命名规范。
类名使用大驼峰方法命名,在区别接口和实现类时,如,接口类:UserInterface.java,接口实现类:UserInterfaceImpl.java。
如果是dao层,则接口类:实体对象+Interface+Dao,实现类:实体对象+Interface+Impl+Dao。
Service层,接口类:模块+Interface+Service,实现类:模块+Interface+Impl+Service。 
变量和方法使用小驼峰方法命名,包的命名全部小写字母,常量命名字母全部大写。
3、学习了数组、Arrays工具类
了解了Arrays是针对数组的工具类,可以进行如下的功能。
(1)数组复制。使用copyOfRange方法,只需要源数组即可,需要注意第三个参数是取不到的,因为下标识按照长度-1标注的。
而System.arraycopy方法则需要好几个参数,比较麻烦。
System.arraycopy方法
copyOfRange方法
(2)转换字符串。使用to String方法,直接把一个数组,转换成字符串。而不是for循环逐一打印。
(3)排序方法。使用sort方法,直接升序排列。
(4)搜索方法。使用binarySearch方法,查找前,必须使用sort方法进行排序,如果多个相同元素,则查找结果不准确。
(5)判断内容是否相同。使用equal方法,输出结果为true或false。
(6)填充。fill方法,将一个值填充整个数组。
4、学习了集合框架、泛型。
因为数组的局限性,声明长度确定后,超过会报错,不超过会浪费,所以引入了容器类的概念。如ArrayList,其容量会随着对象的增加而自动增长。
ArrayList的常用方法如下,其中只先看了add增加的这个功能,在JDBCTemplate中使用过的,其他的等碰到了再深入学习。
 
(1)集合框架。
ArrayList类属于集合框架Collection中的一个实现类,如下图,可看出Java集合主要包含两种类型容器,集合(Collection)存储元素集合,图(Map)存储键/值对映射。集合框架都包含接口、实现类、算法,而Map不是集合,但可以整合在集合里。
其中,List接口是一个有序的Collection,使用此接口能够精准的控制每个元素插入的位置,能够通过索引来访问List中的元素,且允许有相同的元素,第一个元素索引为0。
Map接口存储一组键值对象,提供key(键)到value(值)的映射。
ArrayList类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。
HashMap类是一个散列表,它存储的内容是键值对(key-value)映射。该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。
(2)泛型Generic。
在使用容器时,不指定泛型的容器可以存放任何类型的元素,而指定了泛型的容器只能存放指定类型的元素及其子类,这样就不用了最后取出数据再进行转型了。
JDBCTemplate中使用过,JDK7提供了泛型简写,如下所示,将后面的类型可以省略,聊胜于无。。
泛型涉及很广,还有泛型类以及泛型方法,这里只是大概看了下,等后续有需要再深入学习。
5、从之前看的Java项目目录结构,对DAO模型过了一遍,DAO在数据库与业务逻辑(Service层)之间,service层可以叫服务层,也可以叫业务层。Dao所需要的结构如下:
(1)实体类,即操作的对象,我们创建的表格,需要有一个对应的实体类;
(2)还需要提供一个DAO接口;
(3)然后再提供一个DAO接口的实现类;
(4)再编写一个DAO工厂,Service通过工厂来获取DAO实现;
(5)最后由测试类进行测试。
在Dao层与数据层(mysql)之间,还需要有个将对象和关系数据库绑定的框架,hibernate或者mybatis。这里我简单查看了mybatis的相关知识和实现步骤。
首先,MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和Java的 POJO(普通的Java对象,就是实体类)映射成数据库中的记录。
在查看实例的过程中,我感觉就是涉及的专有名词有很多,也就是有好些是可以直接使用的方法,十分方便。MyBatis的配置文件方面需要多多注意,很多步骤都是通过配置文件或者映射文件实施的。
Mybatis核心类:
    SqlSessionFactory:每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或通过Java的方式构建出 SqlSessionFactory 的实例。SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,建议使用单例模式或者静态单例模式。一个SqlSessionFactory对应配置文件中的一个环境(environment),如果你要使用多个数据库就配置多个环境分别对应一个SqlSessionFactory。
    SqlSession:SqlSession是一个接口,它有2个实现类,分别是DefaultSqlSession(默认使用)以及SqlSessionManager。SqlSession通过内部存放的执行器(Executor)来对数据进行CRUD。此外SqlSession不是线程安全的,因为每一次操作完数据库后都要调用close对其进行关闭,官方建议通过try-finally来保证总是关闭SqlSession。
    Executor:Executor(执行器)接口有两个实现类,其中BaseExecutor有三个继承类分别是BatchExecutor(重用语句并执行批量更新),ReuseExecutor(重用预处理语句prepared statements),SimpleExecutor(普通的执行器)。
今天查看实例,就是对配置文件和映射文件印象深了些,上面的这些关键类,在实例中倒是看见了,当时只是当做类似定义的东西就直接过了。。
总结:
1、查看了Java项目的目录结构。IDEA中的Java目录结构、各自存放的文件,其中的Java文件夹下还分为dao、domain、servlet。
2、查看了Java中的命名规范。类名使用大驼峰方法命名,变量和方法使用小驼峰方法命名,包的命名全部小写字母,常量命名字母全部大写。
3、学习了数组、Arrays工具类了解了Arrays是针对数组的工具类,可以进行如下的功能。

4、学习了集合框架、泛型。
了解了集合框架、容器类、泛型Generic的概念。指定了泛型的容器只能存放指定类型的元素及其子类。
而ArrayList容器类,其容量会随着对象的增加而自动增长。ArrayList的常用方法如下。
5、简单查看了mybatis的相关知识和实现步骤。
MyBatis的配置文件方面需要多多注意,很多步骤都是通过配置文件或者映射文件实施的。
明天计划的事:
1、将spring中的IOC看一看,理解一下。
2、学习Mybatis,动手尝试实例。
3、进行步骤17。
遇到的问题:
今天主要是学习了下理论知识,动手尝试其中的实例,没有什么大问题。。
收获:
1、查看了Java项目的目录结构。IDEA中的Java目录结构、各自存放的文件。
2、查看了Java中的命名规范。类名使用大驼峰方法命名,变量和方法使用小驼峰方法命名,包的命名全部小写字母,常量命名字母全部大写。
3、学习了数组、Arrays工具类了解了Arrays是针对数组的工具类,及其功能。
4、了解了集合框架、容器类、泛型Generic的概念。ArrayList容器类的常用方法。
5、简单查看了mybatis的相关知识和实现步骤。

返回列表 返回列表
评论

    分享到