5.mybatis实战教程(mybatis in action)之五:与spring3集成(附源码)
转自:https://blog.csdn.net/nnn9223643/article/details/41962097
在 这一系列文章中,前面讲到纯粹用mybatis 连接数据库,
然后 进行增删改查,以及多表联合查询的的例子,
但实际项目中,通常会用 spring 这个沾合剂来管理 datasource 等。
充分利用spring 基于接口的编程,以及aop ,ioc 带来的方便。
用spring 来管理 mybatis 与管理hibernate 有很多类似的地方。今天的重点就是数据源管理以及 bean的配置。
1. 首先对前面的工程结构做一点改变,在src_user源代码目录下建立文件夹config ,
并将原来的 mybatis 配置文件 Configuration.xml 移动到这个文件夹中,
并在config 文家夹中建立 spring 配置文件:applicationContext.xml ,这个配置文件里最主要的配置:
1 <!--本示例采用DBCP连接池,应预先把DBCP的jar包复制到工程的lib目录下。 --> 2 3 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 4 <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 5 <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8"/> 6 <property name="username" value="root"/> 7 <property name="password" value="password"/> 8 </bean> 9 //SqlSessionFactoryBean--为整合应用提供SqlSession对象资源--就是中间件所需的处理类 10 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 11 <!--dataSource属性指定要用到的连接池--> 12 <property name="dataSource" ref="dataSource"/> 13 <!--configLocation属性指定mybatis的核心配置文件 Mybatis自身的配置文件,一般用来声明别名--> 14 <property name="configLocation" value="config/Configuration.xml"/> 15 </bean> 16 //MapperFactoryBean--根据指定的Mapper接口生成Bean实例 17 <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 18 <!--sqlSessionFactory属性指定要用到的SqlSessionFactory实例--> 19 <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 20 <!--mapperInterface属性指定映射器接口,用于实现此接口并生成映射器对象--> 21 <property name="mapperInterface" value="com.yihaomen.mybatis.inter.IUserOperation" /> 22 </bean>
[b]这里面的重点就是 org.mybatis.spring.SqlSessionFactoryBean 与 org.mybatis.spring.mapper.MapperFactoryBean[b] 实现了 spring 的接口,
并产生对象。详细可以查看 mybatis-spring 代码。(http://code.google.com/p/mybatis/),如果仅仅使用,固定模式,这样配置就好。
1 package com.yihaomen.test; 2 3 import java.util.List; 4 5 import org.springframework.context.ApplicationContext; 6 import org.springframework.context.support.ClassPathXmlApplicationContext; 7 8 import com.yihaomen.mybatis.inter.IUserOperation; 9 import com.yihaomen.mybatis.model.Article; 10 import com.yihaomen.mybatis.model.User; 11 12 13 public class MybatisSprintTest { 14 15 private static ApplicationContext ctx; 16 17 static 18 { 19 ctx = new ClassPathXmlApplicationContext("config/applicationContext.xml"); 20 } 21 22 public static void main(String[] args) 23 { 24 IUserOperation mapper = (IUserOperation)ctx.getBean("userMapper"); 25 //测试id=1的用户查询,根据数据库中的情况,可以改成你自己的. 26 System.out.println("得到用户id=1的用户信息"); 27 User user = mapper.selectUserByID(1); 28 System.out.println(user.getUserAddress()); 29 30 //得到文章列表测试 31 System.out.println("得到用户id为1的所有文章列表"); 32 List<Article> articles = mapper.getUserArticles(1); 33 34 for(Article article:articles){ 35 System.out.println(article.getContent()+"--"+article.getTitle()); 36 } 37 38 } 39 40 41 }
运行即可得到相应的结果.
工程图:
用到的jar包,如下图:
转载于:https://www.cnblogs.com/sharpest/p/5357280.html
5.mybatis实战教程(mybatis in action)之五:与spring3集成(附源码)相关推荐
- mybatis实战教程(mybatis in action),mybatis入门到精通
目录(?) [-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程 ...
- 微信公众平台开发教程(四) 实例入门:机器人(附源码)
微信公众平台开发教程(四) 实例入门:机器人(附源码) 上一篇文章,写了基本框架,可能很多人会觉得晕头转向,这里提供一个简单的例子来予以说明,希望能帮你解开谜团. 一.功能介绍 通过微信公众平台实现在 ...
- MATLAB应用实战系列(五十三)-模拟退火算法(附源码)
模拟退火算法 模拟退火算法在处理全局优化.离散变量优化等困难问题中,具有传统优化算法无可比拟的优势.这里描述模拟退火算法的原理及其基本框架结构,给出用模拟退火算法求解TSP问题的具体实现方法 以下是我 ...
- Netty实战:Springboot+Netty+protobuf开发高性能服务器 (附源码下载)
Springboot-cli 开发脚手架系列 Netty系列:Springboot使用Netty集成protobuf开发高性能服务器 文章目录 Springboot-cli 开发脚手架系列 简介 1. ...
- 04【Verilog实战】SPI协议底层硬件接口设计(附源码RTL/TB)
脚 本:makefile 工 具:vcs 和 verdi 写在前面 这个专栏的内容记录的是个人学习过程,博文中贴出来的代码是调试前的代码,方便bug重现. 调试后的程序提供下载,[下载地址] 发现 ...
- mybatis实战教程(mybatis in action)之二:以接口的方式编程
前面一章,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询.请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句: session.selec ...
- HQChart实战教程42 - 新浪期货数据源对接 - uniapp版本 (源码付费)
HQChart实战教程41 - HQChart实战教程42 - 新浪期货数据源对接 - uniapp版本 数据源 支持周期 期货品种 平台支持 demo安卓apk下载 源码售价 800元 效果截图 H ...
- b站学python_Python爬虫学习教程 bilibili网站视频爬取!【附源码】
python爬虫学习教程,万物皆可爬!每个技术大牛都是从基础慢慢的提升上去的,基础知识越深以后的发展越牛!学好python,才能玩转python,那到底怎么才能学好python? 通过爬取b站案例带领 ...
- 【Vue 实战项目】后台管理系统登录页详解附源码
提示:前端查漏补缺,仅代表个人观点. 文章目录 一.先看效果图 二.实战步骤 1. 创建项目 2. 引入库 3. 登录页关键代码 三.页面源代码 总结 提示:项目源代码除了登录页面还有动态路由 一.先 ...
- 实战|仿应用宝下载并安装App(附源码)
学更好的别人, 做更好的自己. --<微卡智享> 本文长度为2499字,预计阅读7分钟 仿应用宝下载安装App 前面几章我们学习了检测App是否安装,能过AsyncTask下载App并调用 ...
最新文章
- 《F4+2》—团队项目系统设计改进与详细设计
- TensorFlow学习入门
- 阿里腾讯面试梳理个人成长经历分享
- php 控制器方法,ThinkPhp3.2跨控制器调用方法
- PHP网站加功能,如何实现添加分类的功能
- eclipse根据wsdl文件生成webservice客户端
- 线性插值 多项式插值 样条插值 牛顿插值总结
- eyb:Java代码通过FastDFS实现文件上传
- led伏安特性实验误差分析_大学物理实验伏安特性曲线的误差分析以及小结要怎么写,谢谢^ω^...
- python人脸识别实验报告总结_人脸识别实验报告.doc
- 苏州企业注册商标需要提前做好哪些工作?
- Deepin系统navicat15安装
- 北航计算机组成实验project4,北航fpga实验的报告.docx
- LateX使用笔记(持续更新)
- 插入mysql数据库时间相差14个小时
- 华为面试题目:一头牛重800kg,一座桥承重700kg,牛如何过河?最秀回答秒过!...
- 【ML】混淆矩阵(Accuracy,Precision,Recall,F1)
- PTN与IPRAN承载LTE的比较
- 一步一步教你用 Python 开发战棋游戏,仿英雄无敌
- Spark-submit:System memory 466092032 must be at least 471859200
热门文章
- 【Matlab学习笔记】【数学形态学】分水岭分割算法
- PyQt5多线程刷新界面防假死
- 从零基础入门Tensorflow2.0 ----九、44.1 keras 保存模型、参数
- P+XS算法中Dirac comb的解释
- c语言if的判定条件,if条件判断语句,谁能帮我分析一下?
- Android RecyclerView之SnapHelper原理解析(一)
- Android完美适配dimens.xml脚本
- 4种方案,帮你解决Maven创建项目过慢问题
- 再见,我的程序青葱岁月!
- SuperIndicator 专做轮播图库,没有之一,支持无限循环