发表于: 2017-10-02 23:13:45
1 796
今日完成的事:
学会了mybatis的具体概念,以及实现了通过mybatis对数据库完成增删改查的实现。
首先,以我个人直观的理解mybatis就是,能够以一个对象或集合的形式来返回一个查询的结果集,这就极大的方便了开发人员,无需再对结果集进行处理。其次,通过xml文件来管理sql语句,让代码更少也更加结构清晰了。
mybatis就我自己的理解大致原理是,首先拿到sqlssion会话,拿到sqlSsion主要是通过主配置文件就是下图的configration.xml文件来获取的,该文件中定义了数据源,以及映射文件等信息。拿到该会话就能够对数据库进行操作了,操作是首先得有一个pojo类,其中的属性对应于数据库表中的字段和数据类型,对于每个属性提供get set方法,然后定义一个操作该pojo类的接口。接口中定义了要对该pojo类(间接来讲也就是对表的操作)做什么操作,然后每个接口都有一个xml映射文件,映射文件中包含了sql语句。每个sql语句对应接口中的一个方法,可以想象成是接口的实现,接口定义了做什么,xml映射文件中定义了怎么做。
比如,一个pojo类对应了一个数据库中表,如果表中只有三个字段,id,name,password。那么应该有一个pojo类中也有三个属性,包含对于各个属性的get和set方法,然后有一个接口定义对于这个pojo(数据库表)做哪些操作,然后针对接口有一个xml映射文件相当于间接实现了接口中的某些方法或者全部方法也就定义了如何做。
.首先配置文件,配置数据源,如下图
上图配置文件,目的是为了获取会话也就是sqlSession对象,该对象能够对数据库进行操作。为了达到这个目的,首先要配置好数据源来回答操作哪个服务器上哪个端口的哪个数据库。其次要定义好已有的映射文件也就是<mappers>元素中的<mapper>元素,只有定义好了映射文件mybatis才能知道怎么去操作数据库。
下面有个简单的pojo类,如图
其实这个pojo类对应了摸数据库中的User表,字段和类型都一致,提供了get和set方法
然后针对这个pojo(数据库表)有个接口定义了要对这个pojo做什么操作(对数据库表做什么操作),如下图
知道了要做什么,但是如何做呢,通过什么语句去实现呢,那么xml映射文件的作用就是回答如何做(注意,每个pojo都应该有个一个接口一个xml映射文件),如下图
上图中,主要的是四个元素<select>,<update>,<insert>,<delete>什么意思我就不说了,你接口中定义的方法绝大多数无非就是增删改查,各个标签中对应的id就和接口中的方法一致,例如<select id="findUserNameById resutType="String">和接口中的方法String findUserNameById一致。其他参数就不详述了。
下图是一个测试类,对各个接口中的功能进行测试
上两种图中,首先获取一个SqlSessionFactory然后通过调用该对象的openSession来获取一个会话,此处具体参数不再详述。
附上github链接,可下载源代码跑。
明天计划的事情:
完成任务1的18
遇到的问题:
1.在对mybatis的insert功能进行测试时,程序正常结束,但是表中没有任何变化,后来查询资料发现自己没有对事物进行提交,除了查询mybatis对于增改删都要提交事物。
2.在测试update功能时老是提示错误,最后发现是因为的接口中的方法参数有两个,而针对pojo的接口似乎只接收一个参数,最后使用集合hashMap来输入键值对来间接完成传多个参数的功能。
之前代码如下:
主要是通过id来过滤行然后对password字段进行更新。
后来通过如下方式解决
然后在映射文件中使用map中的key值来获取value.
收获:
对mybatis有了基本的认识和使用经验,认识到了另一种对数据库进行操作的框架。
评论