发表于: 2017-07-13 21:41:47

5 1249


一.今天完成的主要事情

1.mybatis用mapper映射的方式链接数据库,用注解配置数据库

工程项目等基本和昨天mybatis的传统接口实现方式相同.两者主要区别在于和接口的映射方式以及是否编写接口实现上

传统的dao接口实现方式虽然是实现方法很简单,但是依然需要编写实现,而如果用mapper映射方式就可以不用编写实现类,而且如果再配合注解使用,那么甚至连mapper.xml的编写也简单许多

下图是采用注解的UserDao

使用这种方式,原来需要在mapper.xml中编写的sql语句就不用再编写了,使用非常方便,但这种方式也有局限性,因为注解实际上相当于是一种简化,但凡是简化,方便的同时一定有某些局限,注解的局限就是一般只能用于比较简单的sql语句中,如果是为完成某种功能而编写的较为复杂的sql语句时,注解就会力不从心,所以在实际中一些简单的增删改查可以使用注解,但是较为复杂的就需要xml配置.

映射式和传统接口式的主要区别

首先是映射式执行操作的步骤,如下图,先从工厂中获取sqlSession语句,然后用getMapper和对应接口映射,并且返回一个对应接口的对象,然后就可以操作该对象,对数据库执行操作.

传统接口实现的方式,同样是删除操作,先从工厂中获取sqlSession对象,然后再通过sqlSession和xml中的具体的sql语句对应,并且传递参数,然后返回结果,然后测试类或者其他的类创建该类对象,调用方法,完成对数据库的操作

两种方式的比较很明显,传统接口实现的方式需要我们自己去选择用SqlSession中的哪个方法,需要我们自己指定使用哪个参数,相对更为复杂,同时,传统接口实现方式要多创建一个实现类,所以在实际中应该使用mapper映射方式更多一些.

2.用spring jdbc链接数据库,

这种方式和传统的JDBC相比,主要在于使用了反转控制,使我们不用自己去创建一大堆的对象,大大简化了操作.

首先,我们在实现类中再也不用自己去完成诸如创建数据库连接,从链接中获取句柄,处理结果集,释放句柄,关闭链接等繁琐而重复的工作,实现类中的一些初始化操作通过依赖注入的方式由spring帮我们完成,如图:

下图是采用两种注入方式时相应的beans.xml中的配置

实现类需要的数据库链接初始化的操作,由spring在需要的时候通过构造方法或者setter的方式注入给我们,我们直接拿来就用就好,通过这种方式,实现类中的代码得到大大简化,如图,一个删除数据方法,如图

代码量不仅很少,而且释放句柄,释放数据库链接,包括异常的处理,spring都帮我们做好了

ps:在用spring和log4j整合时,spring会默认在初始化时打印一些日志信息,如果不需要这些日志信息,可以在在log4j.properties的rootlogger下添加如下代码就可以过滤掉spring框架开始加载时的提示信息

3.用spring+mybatis链接数据库

只有mybatis,我们虽然不用再编写接口实现类,但需要自己创建各种对象,只有spring,我们不用在创建各种对象,但是要编写接口实现类,两者整合在一起时,完美的将两者的优势结合起来:既不用编写实现类,也不用自己创建一堆对象

两者整合起来,项目目录基本和之前单个的相同,所在区别主要是beans.xml的配置,sqlMapperConfig.xml的配置,

对于beans.xml配置,首先要和springJdbc链接数据库一样配置数据库链接信息,使spring自动生成链接数据库的对象,然后要让spring自动生成sqlSessionFactory和sqlSession语句,并且通过sqlSession映射到UserDao接口上,配置如图

对于sqlMapperConfig.xml的配置,只要删除掉之前配置数据库环境的信息即可,如图:

这样,mybatis和spring就算整合完毕,这时,编写一个接口方法测试就非常简单,如图:

先获取到接口对象

然后通过接口对象调用方法操作数据库

4.尝试本地链接服务器的数据库

现在本机数据库上测试增删改查都通过

然后,更改数据库信息,使其链接服务器上的数据库,配置如下

然后运行主方法,问题来了,始终链接不上数据库,具体错误信息如下,要求修改数据库中的max_allowed_packet变量.

在网上找了很久,都说只要修改该变量的值就可以,如图(将该变量的值修改到20M)

但是我修改之后,依然报错,报的错误信息一模一样,后来我尝试直接关闭数据库服务,还是报同一个错误,经过检查,数据库IP地址,端口号,用户名,密码都没有问题,但就是报上述错误,对于该问题,暂时还未解决

二.明天的计划

1.解决连不上远程数据库的问题

2.准备小课堂

3.任务一中的最后几个task,完成测试

三,遇到问题

以上所属

四.收获

对JDBC,mybatis,spring链接数据库的方式理解的更加透彻

学会了mybatis+spring的整合方式

更加深刻的体会到两种框架的特点


返回列表 返回列表
评论

    分享到