mybatis的搭建和注入spring的方式
mybatis实际上是一个更多关注sql语句的框架,他的出现是想让开发者更简单的去操作数据库。
与hibernate相比较,hibernate更多的是去sql化,虽然hibernate也可以本地sql执行,hibernate更多的是关注与hql的编写和对象映射的配置,
只要配置完了,hibernate有封装好的函数可以帮你执行操作数据库,当然hibernate也是靠生产sql语句去实现操作数据库的,值得注意的是
hibernate可以很容易的去适应不同类别的数据库,只要配置更改一下就可以针对不同的数据库生产不一样的sql语句,hibernate的难点可能集中
于单双边和几对几po对象的配置问题。所以说一定程度上来说hibernate掌握的门槛可能比mybatis要高一些。
回过头来,mybatis相对Hibernate“O/R”而言,mybatis是一种“Sql Mapping”的ORM实现。
你只需要再mybatis的对象映射文件xml中写好自己的sql语句,并同时配置好入参和返回值类型,那么mybatis就可以帮你po对象存到数据库或者
将数据库的数据映射到对象来,那么在使用mybatis的时候其实主要工作就是写sql了,然后就是一些配置规则的细枝末节。
今天我们要搭建mybatis,并顺便整合到我们spring项目中,spring项目就是我之前的博客中《springMvc+hibernate的web application的构建》所构建成功的项目。
1mybatis当然少不了响应的jar包,3.2.7是我下载的jar包,当然不是最新的,最新我找了很久,有的是因为jar下载的链接卡住了,有的是因为csdn上下载的积分和c币用光了。
下图是我下载的jar包。
因为咱们这个spring项目是web项目,直接丢到webContent下的lib里面就好,既可以在application中的main函数执行,也可以再web服务器中运行,就很舒服。
然后在项目的src下放入我们的配置文件,配置文件如下:
配置文件的位置如下:
可以看到分为两部分,一部分是关于连接数据库的,另一部分是关于po配置的xml文件。
当然mybatis也需要jdbc.driver的,然后po的xml会稍后展示。
现在我们需要做的是建立好数据库的表,以及po类的建立,以及po对应下xml配置问题。
我们一个个来看下:
那么,现在大家就可以看见了,通过参数类型的定义,返回值类型的定义,我们在其他地方调用这个sql语句的时候就
可以实现我们的数据库操作了。
不过在执行这个操作的时候,我们应该先初始化好mybatis的配置文件,以便加载mybatis。
这个时候我们的下面代码就可以做到了:
当我们初始化好后,就可以做我们想要的操作了。
那新的问题又来了,我们如何将这个mybatis融入到我们的项目中呢?
其实方法有两种,
1因为我们这个是spring项目,所以可以再spring的配置文件中加入这个MybatisOfSpringUtil类,之后需要的时候就可以通过
spring的上下文对象getBean方法获得了。
2也就是我使用的方式,从上面的这个方法可以看到sqlSessionFactory这个变量是静态的,且实现了单例模式的。直接在要使用的
地方调用MybatisOfSpringUtil.getSessionFactory()就好。不需要将这个类注入到spring中。
其实两种方法都是可以的,一个是靠注入spring项目的时候初始化mybatis的配置文件,一个是靠第一次调用MybatisOfSpringUtil.getSessionFactory()
的时候去初始化mybatis配置文件。
当我们初始化好后,就可以在需要的时候调用了,也就意味在自己的项目中加好了mybatis框架。
我的调用是方式是:
当然这款代码是dao层的代码。有了这块代码,其他层就可以调用了,从service层到MVC的controller层。
现在我们看看是否能运行成功。
现在我先再数据库加一条记录,而我们的sql语句是根据主键来获取对象。
所以参数为1的时候能查到数据库数据,其他的时候就不能查询到数据库数据。
controller层我判断查询的对象是否为null,来分别返回不同的页面。
controller层代码是:
那么id参数为1的时候coffe对象就不为null,其他的时候就为null。
我们再观察页面就知道mybatis是否起作用了。
我们先访问: http://localhost:8080/springMvcOrm/anonymous.mvc?method=mybatisMethodTest&id=1
然后再访问:http://localhost:8080/springMvcOrm/anonymous.mvc?method=mybatisMethodTest&id=6
ok,没问题。说明mybatis就搭建成功了。
有什么不明白的可以留言,我有空的时候会回来回复,也欢迎大家批评指正。
see you lala。。。
mybatis的搭建和注入spring的方式的更多相关文章
- 解决mybatis拦截器无法注入spring bean的问题
公司要整合rabbitmq与mybatis拦截器做一个数据同步功能. 整合过程中大部分环节都没什么问题,就是遇到了mybatis拦截器 @Intercepts(@Signature(type = Ex ...
- Mybatis 学习笔记1 不整合Spring的方式使用mybatis
两种方式都包含了: package com.test.mybatis; import java.util.List; import org.apache.ibatis.io.Resources; im ...
- spring练习,使用Eclipse搭建的Spring开发环境,属性注入通过构造方法方式实现,模拟用户的正常登录。
相关 知识 >>> 相关 练习 >>> 实现要求: 使用Eclipse搭建的Spring开发环境,属性注入通过构造方法方式实现,模拟用户的正常登录.要求如下: 通过 ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...
- 0028ssm环境搭建(springmvc+spring+mybatis)
spring整合springmvc和mybatis主要分为如下几个步骤: 1.spring环境搭建 2.springmvc环境搭建 3.spring整合springmvc 4.spring整合myba ...
- Spring+Mybatis+Mysql搭建分布式数据库访问框架
一.前言 用Java开发企业应用软件, 经常会采用Spring+MyBatis+Mysql搭建数据库框架.如果数据量很大,一个MYSQL库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如 ...
- spring 整合 mybatis 中数据源的几种配置方式
因为spring 整合mybatis的过程中, 有好几种整合方式,尤其是数据源那块,经常看到不一样的配置方式,总感觉有点乱,所以今天有空总结下. 一.采用org.mybatis.spring.mapp ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)
在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...
- Spring(二十三):Spring自动注入的实现方式
注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解包含:Autowrired/Resource/Qualifier/Service/Controller/Repository/C ...
随机推荐
- 团队作业9——测试与发布(Beta版本)
Beta版本测试报告 一bug汇总 计时没有显示即倒计时,难度不同的功能没有实现(已修复) 没有导入试卷和错题功能(不打算修复) 前台管理功能(部分修复) 界面美观问题(没有修复也不打算修复) 二.场 ...
- 201521123038 《Java程序设计》 第八周学习总结
201521123038 <Java程序设计> 第八周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 从集合里面获取对象时必须进行强制类 ...
- 201521123037 《Java程序设计》第3周学习总结
1. 本周学习总结 链接:http://naotu.baidu.com/file/026a646bb4031d4238accc69cdf53272 2. 书面作业 1. 代码阅读 public cla ...
- 201521123006 《java程序设计》 第13周学习总结
1. 本周学习总结 1.以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.j ...
- 201521123064 《Java程序设计》第12周学习总结
本次作业参考文件 正则表达式参考资料 1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. ① 标准输入输出流(字节流):标准输入流 System.in,标准输出流 ...
- 201521123062《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synch ...
- 201521123001 《Java程序设计》第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 答: 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需 ...
- windows 2008 R2操作系统上使用iis服务运行php和mysql数据库的网站遇到的验证码不显示问题?
1,本地运行正常,路径没问题. 2,GD2.dll开启 3,IIS服务正常开启,并启用父路径为True 4,检查是否IIS服务中FSO权限问题 开始 -> 程序 -> 管理工具 -> ...
- python之进程----Queue
一.Queue是通过multiprocessing使用 from multiprocessing import Process,Queue import time import random impo ...
- Intellij idea 断点调试
前言 之前使用Intellij Idea断点调试都是极其简单的,都是下一步下一步下一步这样子-..还有最坑爹的以为:IDEA只能调试一次.调试完就要重启Tomcat服务器-..因此花了大量的冤枉时间- ...