1. 上两篇文章讲述了 mybatis 的单独集成及使用入门,放置了几天,今天抽时间查看整合了一下mybatis和Spring的整合使用,导包就不说了 ,下载相应的 mybatis 和 spring 的整合开发jar包
  2. 先将实体的bean贴出来吧,放置的com.puya.mybatis.pojo.User包下
package com.puya.mybatis.pojo;import java.io.Serializable;public class User implements Serializable {private Integer id;private String name;private String station;private String telephone;private String address;private String decidedzone_id;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getStation() {return station;}public void setStation(String station) {this.station = station;}public String getTelephone() {return telephone;}public void setTelephone(String telephone) {this.telephone = telephone;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getDecidedzone_id() {return decidedzone_id;}public void setDecidedzone_id(String decidedzone_id) {this.decidedzone_id = decidedzone_id;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", station=" + station + ", telephone=" + telephone + ", address="+ address + ", decidedzone_id=" + decidedzone_id + "]";}}
  1. 实体bean之后就是Mapper文件,就是前两篇使用的mapper文件,放置在package com.puya.mybatis.mapper下

public interface UserMapper {//遵循四个原则//接口方法名  == User.xml 中的id 名字//接口中的返回值类型   与  Mapper.xml文件中的返回值一样//方法的 形参  与Mapper.xml文件中的   形参一样//将Mapper.xml 文件  命名空间   和    接口  捆绑public User findUserById(Integer id);}

对应的mapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 写sql语句的地方 -->
<mapper namespace="com.puya.mybatis.mapper.UserMapper"><!--mapper参数详解:namespace:命名空间,区分不同的sql,调用的时候使用 user.findUserByIdselect 参数详解parameterType  : 传入参数的类型,mybatis封装了基本类,只需要写resultType     : 返回的数据类型,一般是全类名如果 sqlMapConfig 配置类别名 2. 指定扫描包,会把包内所有的类都设置别名,别名的名称就是类名,大小写不敏感//<typeAliases>//<package name="com.puya.mybatis.pojo" />//    </typeAliases>name返回值resultType 可以直接写类名字,不用全类名--><select id="findUserById" parameterType="Integer" resultType="com.puya.mybatis.pojo.User">select * from t_customer where id = #{v}</select><!-- #{v}            表示占位符v可以是任何字符           select * from t_customer where id = ?${value}        表示字符拼接,只能是value  select * from t_customer where name like '%张三%'  ,有单引号的为了防止sql注入  ${value}  可以这样写   select * from t_customer where name like "%"#{value}"%"--><select id="findUserByUserName" parameterType="String" resultType="com.puya.mybatis.pojo.User"><!-- select * from t_customer where username like '%${value}%' -->select * from t_customer where name like "%"#{value}"%"     <!-- 这个可以防止sql注入  --></select><insert id="insertUser" parameterType="com.puya.mybatis.pojo.User"><!--private Integer id;private String name;private String station;private String telephone;private String address;private String decidedzone_id;  --><selectKey keyProperty="id" resultType="Integer" order="AFTER">select LAST_INSERT_ID()    <!-- 这个表示执行最新的id 服装到User的id中去--></selectKey>insert into t_customer (name,station,telephone,address,decidedzone_id) value(#{name},#{station},#{telephone},#{address},#{decidedzone_id})</insert><update id="updateUserById" parameterType="com.puya.mybatis.pojo.User">update t_customer set name=#{name},station=#{station},telephone=#{telephone},address=#{address},decidedzone_id=#{decidedzone_id}where id=#{id}</update><delete id="deleteUserById" parameterType="Integer">delete from t_customer where id =#{value}</delete></mapper>
  1. 接下来配置sqlMapconfig的文件,在src下新建一个sqlMapConfig.xml文件,这里采用别名的方法,如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 设置别名 --><typeAliases><!-- 2. 指定扫描包,会把包内所有的类都设置别名,别名的名称就是类名,大小写不敏感 --><package name="com.puya.mybatis.pojo" /></typeAliases><mappers><package name="com.puya.mybatis.mapper"/></mappers>
</configuration>
  1. jdbc的配置文件,db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/bos_puya32?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

6.上面都是辅助的文件 和 类,主要的配置连接池和mybatis的基本文件,接下类是最 重要 重要 重要的地方来了,Spring中整合 mybatis,新建一个 applicationContext.xml文件,核心内容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"><context:property-placeholder location="classpath:db.properties"/><!-- 数据库连接池 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="maxActive" value="10" /><property name="maxIdle" value="5" /></bean><!-- 配置mybatis的工厂 --><bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 需要连接池 --><property name="dataSource" ref="dataSource"/><!-- 核心配置文件的位置 --><property name="configLocation" value="classpath:sqlMapConfig.xml"/></bean><!--  传统到  的写法   --><bean id="userDao" class="com.puya.mybatis.dao.UserDaoImpl"><property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/></bean> <!-- Mapper动态代理开发 --><bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/><property name="mapperInterface" value="com.puya.mybatis.mapper.UserMapper"/></bean><!-- Mapper动态代理开发   扫描 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 基本包 --><property name="basePackage" value="com.puya.mybatis.mapper"/></bean></beans>

其实也就两个重点,第一:配置连接池,这个在hibernate和struts中都用

<context:property-placeholder location="classpath:db.properties"/><!-- 数据库连接池 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="maxActive" value="10" /><property name="maxIdle" value="5" /></bean>

第二个重点就是配置mybatis的工厂bean

<!-- 配置mybatis的工厂 --><bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 需要连接池 --><property name="dataSource" ref="dataSource"/><!-- 核心配置文件的位置 --><property name="configLocation" value="classpath:sqlMapConfig.xml"/></bean>

如果采用传统的dao 和 daoImpl的写法,如果是hibernate的话需要注入sessionFactory,提供属性,每个daoImpl都要有,但是在mybatis中我们可以键sessionFactory整合在 父类中个,到时我们到Impl要继承mybatis提供的 SqlSessionDaoSupport,在applicationContext配置如如下

<!-- Dao原始Dao --><bean id="userDao" class="com.itheima.mybatis.dao.UserDaoImpl"><property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/></bean>

相应的daoImpl,dao是空的接口,就不贴出了


import org.mybatis.spring.support.SqlSessionDaoSupport;/*public class UserDaoImpl implements UserDao{//传统的  dao  要注入sessionFactory//提供set方法
}
*/public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{//Mybatis 将session通过配置文件 将SessionFactory注入的父类中,子类直接盗用方法使用//  前提:  继承   Mybatis提供的  SqlSessionDaoSupport//  然后直接  用   调用父类中的  getSqlSession()方法public void  insertUser() {
//      this.getSqlSession().insert(arg0)}
}
  1. 如果采用Mapper代理的方式,就是下面这种方式,配置接口map
<!-- Mapper动态代理开发 --><bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/><property name="mapperInterface" value="com.puya.mybatis.mapper.UserMapper"/></bean>

下面是测试的代码,通过id的方式找到 有mybatis工厂创建实现类

 @Testpublic void testSpringMbatis() {ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");UserMapper userMappter = (UserMapper) ac.getBean("userMapper");User user = userMappter.findUserById(1);System.out.println(user );}

如果Mapper的数量比较多,就可以通过配置包名动态扫描,在applicationContext配置

!-- Mapper动态代理开发   扫描 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 基本包 --><property name="basePackage" value="com.puya.mybatis.mapper"/></bean>

mybatis会扫描配置包名中的所有子包,sessionFactory都不需要配置,mybatis会找到在applicationContext下配置的 sessionFactory ,使用的话就采用以下的方式来生成 实现类

@Testpublic void testSpringMbatis_swipe() {ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");UserMapper userMappter = (UserMapper) ac.getBean(UserMapper.class);User user = userMappter.findUserById(2);System.out.println(user+ "   11111111111111");}

采用接口的 .class 文件来创建对象,就不是通过id来查找了

以上的两个测试方法 都 测试通过 , 测试的时候请见数据库名字 和表名修改 ,jdbc的连接密码修改 ,希望对
大家有用!

Spring与 Mybatis的 整合 使用相关推荐

  1. SSM框架Spring+SpringMVC+MyBatis——详细整合教程

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参 ...

  2. Spring+SpringMVC+MyBatis+easyUI整合优化篇(十三)数据层优化-表规范、索引优化

    本文提要 最近写的几篇文章都是关于数据层优化方面的,这几天也在想还有哪些地方可以优化改进,结合日志和项目代码发现,关于数据层的优化,还是有几个方面可以继续修改的,代码方面,整合了druid数据源也开启 ...

  3. Spring+SpringMVC+MyBatis+easyUI整合优化篇(五)MockMvc服务端的单元测试

    日常啰嗦 承接前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(四)单元测试实例>,已经讲解了dao层和service层的单元测试,还有控制器这层也不能 ...

  4. Spring系列(七)、Spring与MyBatis框架整合

    7 搭建Spring与MyBatis的集成环境 要实现Spring与MyBatis的整合,很明显需要这两个框架各自的jar包,以及整合两个框架的中间包mybatis-spring.jar: 我们使用m ...

  5. Spring和MyBatis环境整合

    2019独角兽企业重金招聘Python工程师标准>>> Spring: Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. 两个重要模块:Spring 面向 ...

  6. Spring+SpringMVC+Mybatis框架整合流程

    一:基本步骤 新建Maven项目,导入相关依赖.(推荐) ----–Mybatis配置 ------ 新建entity包,并根据数据库(表)新建相关实体类. 新建dao包,并根据业务创建必要的mapp ...

  7. Spring Boot + Mybatis 快速整合

    引言 最近在工作结束后抽时间学习了一下mybatis的知识,因为之前有学习过,但是经久不用,也未曾踏实地整理,因此有所淡忘. super meeting会议管理系统是我厂最近开发的一套会议预约平台.持 ...

  8. Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 萌芽阶段 很久之前就开始打算整理一下自己的技术博客了,由于各种原因( ...

  9. spring boot mybatis 整合_两大热门框架 Spring 与 Mybatis 如何整合呢?

    整合的方式 新建 maven 项目 引入依赖包 配置资源文件 案例实操 新建 maven 项目 新建 maven 项目 spring_mybatis 目录结构如下: 主目录包: ​ com.xxx.d ...

  10. 最详细的Spring+SpringMVC+Mybatis框架整合及mybatis分页讲解,适合初级者

    最详细的关于idea整合ssm框架讲解 一个关于brand(品牌)的项目 [ssm框架搭建源代码及mysql数据库数据]链接:https://pan.baidu.com/s/1eBogklK0rFLj ...

最新文章

  1. python四:字符串和数字
  2. Hadoop详解(十二):Yarn资源调度策略
  3. BOOST内存管理(二) --- boost::pool
  4. 各种光源(灯)的光谱
  5. file获取文件后缀_Python 工匠:高效操作文件的三个建议
  6. 数据结构-树1-概念
  7. JSP自定义标签详解(1)
  8. linux服务器中解压与打包jar文件
  9. 七、Oracle学习笔记:数值函数
  10. 女士品茶 - 简单摘录
  11. 5分钟三句代码实现抖音自动下载
  12. 软考__常用英语单词
  13. 区块链上的中国?2018见分晓
  14. 碰到文件夹损坏咋解决?
  15. SQL注入之利用DNS获取数据
  16. 怎么把ppt文件转换成pdf?解决方法有这几种
  17. 180209 逆向-Frida-python on win多进程BUG(曲线救国)
  18. MacOS 10.15 Laravel框架 使用 Box/Spout 导入导出Excel
  19. 基于51单片机的APDS9960 驱动
  20. VC 怎么获取windows7系统管理员权限

热门文章

  1. 药物磷钼钨杂多酸修饰MOF-5|Bio-MOF-11装载MTX甲氨蝶呤|COF-105装载姜黄素
  2. arm架构安装虚拟XP
  3. 深入RUST标准库内核(三)NonNull<T>/Unique<T>/mem::replace/Layout/GlobalAlloc
  4. springboot项目中sql语句出错排除错误方法
  5. 63.深度解密网络项目一:不用PS也能从事专业的老照片翻新修复
  6. matlab projinv,有没有大神救救孩子?
  7. mysql数据库导入sql文件Mysql导入导出.sql文件的方法
  8. c-free 5.0 菜单,工具条丢失解决
  9. 【MATLAB教程案例11】基于PSO粒子群优化算法的函数极值计算matlab仿真及其他应用
  10. 亚马逊关键词-寻找合适的关键词