1、创建mybatis-spring 工程,并导入相应的 jar 包



2、在 spring 全局配置文件中 applicationContext.xml 中配置 SqlSessionFactory,以及数据源


①、我们将数据库配置信息写入classpath 目录的 db.properties 文件中

#db.properties
dataSource=org.apache.commons.dbcp.BasicDataSource
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatisrelation
jdbc.username=root
jdbc.password=root

②、在mybatis全局配置文件mybatis-configuration.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>
<!--开启二级缓存  -->
<settings><setting name="cacheEnabled" value="true"/>
</settings><!-- 包的别名定义 -->
<typeAliases><package name="com.ys.po"/>
</typeAliases><!-- 注意:下面的以前有mybatis全局配置文件管理mapper,现在转移到spring容器管理 -->
<!-- <mappers><mapper class="com.ys.po.UserMapper"/></mappers> --></configuration>

③、在 spring 全局配置文件中 applicationContext.xml 中配置 SqlSessionFactory,以及数据源

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.2.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 加载classpath下的db.properties文件,里面配了数据库连接的一些信息 --><context:property-placeholder location="classpath:db.properties"/><!-- 配置数据源 --><bean id="dataSource" class="${dataSource}" 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><!-- 配置sqlSessionFactory,SqlSessionFactoryBean是用来产生sqlSessionFactory的 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 加载mybatis的全局配置文件,放在classpath下的mybatis文件夹中 --><property name="configLocation" value="mybatis/mybatis-configuration.xml" /><!-- 加载数据源,使用上面配置好的数据源 --><property name="dataSource" ref="dataSource" /></bean></beans>

3、mapper 接口开发配置


①、创建 po 类

    在com.ys.po包下创建 User.java

package com.ys.po;public class User {private int id;private String username;private String sex;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "User [id=" + id + ", username=" + username + ", sex=" + sex+ "]";}
}

②、创建接口 UserMapper.java,以及UserMapper.xml 文件

必须满足以下四点:

1、UserMapper 接口必须要和 UserMapper.xml 文件同名且在同一个包下,也就是说 UserMapper.xml 文件中的namespace是UserMapper接口的全类名
2、UserMapper接口中的方法名和 UserMapper.xml 文件中定义的 id 一致
3、UserMapper接口输入参数类型要和 UserMapper.xml 中定义的 parameterType 一致
4、UserMapper接口返回数据类型要和 UserMapper.xml 中定义的 resultType 一致

UserMapper.java

package com.ys.mapper;import com.ys.po.User;public interface UserMapper {//根据 id 查询 user 表数据public User selectUserById(int id) throws Exception;
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ys.mapper.UserMapper"><!-- 根据 id 查询 user 表中的数据id:唯一标识符,此文件中的id值不能重复resultType:返回值类型,一条数据库记录也就对应实体类的一个对象parameterType:参数类型,也就是查询条件的类型--><select id="selectUserById"resultType="com.ys.po.User" parameterType="int">select * from user where id = #{id}</select></mapper>

4、在 spring全局配置文件applicationContext.xml 中配置 mapper


<!-- MapperFactoryBean:根据mapper接口生成的代理对象 -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="com.ys.mapper.UserMapper"/><property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

测试:

package com.ys.test;import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ys.mapper.UserMapper;
import com.ys.po.User;public class UserMapperTest {private ApplicationContext applicationContext;@Beforepublic void setUp() throws Exception {applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");//得到spring容器}@Testpublic void testSelectUserById() throws Exception {UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");User user = userMapper.selectUserById(1);System.out.println(user);}}

从配置中可以看出,使用MapperFactoryBean来产生mapper的代理对象,首先要配置一个mapperInterface,即你要spring产生哪个mapper接口对应的代理对象,将mapper接口的全类名给传进去,spring就知道要创建对应的代理对象了,然后配置sqlSessionFactory,用来产生sqlSession。

  但是我们发现,id="userMapper" 写死了,如果我们有很多 mapper 接口,那么我们每一个都需要配置吗?答案是不用的,我们可以不用配置 id 属性,然后加上包扫描配置,如下:

<!--第二种方式:mapper批量扫描规范:mapper.java和mapper.xml必须在同一个包下,并没名称一致bean的id为mapper类名(首字母小写)--><bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 指定扫描的包名如果扫描多个包,那么每个包中间使用半角逗号分隔 --><property name="basePackage" value="com.ys.mapper"></property><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /></bean>

mybatis ------ mybatis和spring整合(十一)相关推荐

  1. springmvc教程--整合mybatis开发(spring+springMVC+mybatis整合开发)

    一.整合mybatis 为了更好的学习 springmvc和mybatis整合开发的方法,需要将springmvc和mybatis进行整合. 整合目标:控制层采用springmvc.持久层使用myba ...

  2. Spring整合SequoiaDB SQL

    2019独角兽企业重金招聘Python工程师标准>>> 1.背景 Spring在J2EE应用程序开发框架中占据重要的作用,它实现了轻量级的IoC(控制反转)和AOP(面向切面)容器框 ...

  3. 最新Spring整合MyBatis详解教程

    目录 1.导入相关jar包 1. junit 2. mybatis 3. mysql 4. spring相关 5. aop织入 6. mybatis-spring 7. lombok(选用) 2.回顾 ...

  4. springMvc+mybatis+spring 整合 包涵整合activiti 基于maven

    2019独角兽企业重金招聘Python工程师标准>>> 最近自己独立弄一个activiti项目,写一下整合过程: 环境:jdk1.7 tomcat7.0 maven3.5  ecli ...

  5. spring整合mybatis(入门级简单教程2)

    1.这几天在网上查找spring和mybatis的整合的博客以及相关的资料,弄来弄去,程序还是跑不起来.今天早上突然意识到,什么事都是从零开始的,所以,我就改变了我的整合思路:首先,先在spring上 ...

  6. spring整合mybatis(入门级简单教程1)--在spring中配置c3p0,并成功测试

    引子:spring整合mybatis.因为,我们看完(我就是这样的)spring和mybatis之后,本想自己写一个小小的项目,以便加深理解,但是我发现在spring中整合mybatis并不是一件容易 ...

  7. mybatis02映射动态sql关联查询spring整合mybatis

    2019独角兽企业重金招聘Python工程师标准>>> 输入映射和输出映射: 动态sql: 关联查询_一对一: 关联查询_一对多: 一对一,一对多操作的区别: 一对一,resultM ...

  8. Mybatis和Spring整合

    一.dao接口+实现类的方式 1.先创建好整合工程结构 2.对于Spring和Mybatis 整合,我们先从数据库开始,即先创建一张简单的数据表,Sql如下 CREATE TABLE `t_user` ...

  9. Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(二:mybatis整合spring)

    http://blog.csdn.net/qq598535550/article/details/51703190 二.Spring整合mybatis其实是在mybatis的基础上实现Spring框架 ...

  10. Spring集成Mybatis,spring4.x整合Mybatis3.x

    Spring集成Mybatis,spring4.x整合Mybatis3.x ============================== 蕃薯耀 2018年3月14日 http://www.cnblo ...

最新文章

  1. Python:Downloader Middlewares
  2. 信息服务器已停止工作,游戏服务器已停止工作
  3. ASP.NET MVC 中将FormCollection与实体间转换方法
  4. Facebook 应用机器学习团队专访:人工智能在 Facebook 中的应用
  5. idea快速写出for循环
  6. 电商网站攻防,三个制胜锦囊
  7. 【BZOJ2152】聪聪可可,dfs+递推/点分治
  8. 【MySQL】mysql 数据库名称 中间带有中划线问题
  9. 国内一些SCM相关论坛站点
  10. HDU 4280 Island Transport(HLPP板子)题解
  11. 极通EWEBS远程接入v4.2六步实施法
  12. 月薪达到1万的web前端工程师,都会些什么呢?(附路线资料)
  13. 复制粘贴激活win10的方法--无毒
  14. 系统分析师学习笔记(十七)
  15. tkinter模块 视窗设计相关操作
  16. SQL学习笔记:服务端配置-如何使用企业管理器
  17. 腾讯实时音视频通话sdk集成----小程序版本
  18. 软考高项范文——论信息系统项目的人力资源管理
  19. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)部分题解
  20. 推荐几个不错的DOTNET控件网址

热门文章

  1. 同一条sql在mysql5.6和5.7版本遇到的问题。
  2. JavaScript通俗易懂(一)-变量提升
  3. Mongoose 是什么?
  4. BZOJ 3390: [Usaco2004 Dec]Bad Cowtractors牛的报复(最大生成树)
  5. 使用数据模板自定义数据显示
  6. 马云在《赢在中国》对创业者的经典点评
  7. 乐山市计算机学校谭娟,乐山市计算机学校重视新闻写作培训
  8. linux su root 免密码,Ubuntu 18.04.2切换到root用户的三种方式及设置免密码操作
  9. excel重复上一步快捷键_史上最全的Excel快捷键合集
  10. 设计素材画面太平淡?优秀案例网页教你如何用色彩丰富画