文档章节

IDEA中使用maven整合mybatis与spring

柠檬的橘子
 柠檬的橘子
发布于 2016/11/18 09:48
字数 943
阅读 55
收藏 0
点赞 0
评论 0

整合思路

需要spring通过方式管理SqlSessionFactory.
spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession.(Sping和mybati整合自动完成).
持久层的mapper都需要有spring进行管理.

整合环境

创建一个新的java工程.

mybatis的jar包,spring的jar包
spring和mybatis的整合包
参考:SSM的maven工程的创建

代码操作

一、创建配置文件:applicationContext.xml

<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <!-- 加载配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!-- 数据源,使用dbcp -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <property name="maxActive" value="${maxActive}"/>
        <property name="maxIdle" value="${maxIdle}"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 加载mybatis的配置文件-->
        <property name="configLocation" value="mybatis/SqlMapperConfig.xml"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>

</beans>

其他配置文件的创建

二、原始dao开发:applicationContext.xml

applicationContext.xml中的原始dao配置

    <!-- 原始dao接口 -->
    <bean id="userDao" class="club.lemos.ssm.dao.UserDaoImpl">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>

测试文件:

public class UserDaoImplTest {

    private ApplicationContext applicationContext;
    @Before
    public void setUp() throws Exception {

        //获取spring的配置文件applicationContext.xml,这个配置文件中包含着dbcp数据源的相关配置.
        //还包含着sqlSessionFactory的生成类SqlSessionFactoryBean.它可以让数据源和 sqlMapConfig.xml(配置了mapper的映射文件及mybatis的其他配置信息)相联系.
        //还有原始的dao接口,这个接口依赖于上面的SqlSessionFactory 那么可以在dao的实现类中可以通过继承SqlSessionDaoSupport来
        //获取sqlSessionFactory对象.
        applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
    }

    @Test
    public void findUserById() throws Exception {

        //通过spring配置文件,获取userDao对象
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");

        //调用UserDao的方法
        User userById = userDao.findUserById(1);
        System.out.println(userById);
    }
}

注意事项:

IntelliJ Idea编译报错:javacTask: 源发行版 1.7 需要目标发行版 1.7
解决办法:选中项目,右击选择Maven–>Reimport, 再次编译,问题解决。

原文:http://blog.csdn.net/wave_1102/article/details/47671019

 

或者,可以使用:关键是java编译插件。

<build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <!-- 资源文件拷贝插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- java编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

三、mapper代理开发

applicationContext.xml中的mapper代理配置

   <!--mapper代理配置,由mapper接口生成代理对象.原始dao的方法是根据实现类生成代理对象 -->
    <!--<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">-->
        <!--<property name="mapperInterface" value="club.lemos.ssm.mapper.UserMapper"/>-->
        <!--<property name="sqlSessionFactory" ref="sqlSessionFactory"/>-->
    <!--</bean>-->

    <!--自动扫描mapper,其bean对象的id默认为接口名,首字母小写-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 这里不使用sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 指定扫描的路径 -->
        <property name="basePackage" value="club.lemos.ssm"/>
    </bean>

注意:使用IDEA的maven工具进行开发时,会出现spring代理器无法读取mapper配置文件 XXXMaper.xml的问题—— org.apache.ibatis.binding.BindingException

.
此时,可以尝试手动将其移动到对应接口的类路径下,看看能不能运行。

但是,实际开发中不可能这样做,可以在pom.xml中配置下面这句话:

...
    <build>
        <finalName>springmvc-study</finalName>
        <resources>
            <resource>
                <directory>${basedir}/src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
            </resource>
        </resources>
    </build>
</project>

如果文件已经移动到指定的位置。还报错。那么可能是文件自身有问题。比如命名空间不正确。之前就是逆向工程生成的mapping文件的命名空间不正确导致这个问题。

 

END

本文转载自:http://blog.csdn.net/qq_34232804/article/details/53123791

柠檬的橘子
粉丝 6
博文 177
码字总数 86206
作品 0
芜湖
后端工程师
Mybatis-Generator插件的使用与Spring集成Mybatis的配置

Mybatis-Generator插件 Mybatis-Generator是一个用于自动生成dao层接口、pojo以及mapper xml的一个Mybatis插件,该插件有三种用法:命令行运行、Eclipse插件、maven插件。个人觉得maven插件最...

ZeroOne01
04/15
0
0
Spring boot在IDEA里面的热部署

配置Spring boot的开发工具 Maven 配置IDEA的spring boot工程更新策略 总结 这里基本上就是借助Spring boot的开发工具和IDEA完成热部署的,如果不差钱的金主可以考虑使用JRebel(嗯,3k一年的...

亚林瓜子
前天
0
0
IntelliJ IDEA 2018.2 EAP 发布,支持 Touch Bar

IntelliJ IDEA 2018.2 EAP 已发布:包含对 MacBook Touch Bar 的支持,对 Gradle 支持的改进,新图标,Spring Boot 及一些更新。 支持 Touch Bar 即将推出的 IntelliJ IDEA 2018.2 引入了 To...

达尔文
05/18
0
0
Spring boot Mybatis 整合(完整版)

个人开源项目 springboot+mybatis+thymeleaf+docker构建的个人站点开源项目(集成了个人主页、个人作品、个人博客) 朋友自制的springboot接口文档组件swagger2 更多干货 SpringBoot系列目录...

舒运
07/09
0
0
spring security 3.2.0.M1 方法级别教程 基于注解——第一部分

说明 一直在用spring security与shiro权限框架。最近spring security升级到了3.2.0.M1,所以更新了一下,看一下是否还是可以按照老方法使用。 基于方法级别的权限控制 spring security通过用户...

欧阳澄泓
2013/06/24
0
0
商城后台管理系统 - freeter-admin

飞特商城后台管理系统,采用springboot快速开发框架,参考了一些开源作品,如人人开源,集后台和商城模块的开源系统。 火爆的商场模块,后续会加入更多的商城模块 超级代码生成器,可直接生成...

18356087258
06/26
0
0
springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建

springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建) 标签: springmvc mybatis [TOC] 本文主要展示如何在intellij IDEA中通过maven构建springmvc+mybatis框架的开发环境。 需求...

brianway
2016/03/10
432
0
Intellij IDEA 的使用

前言: 为什么我要选择intellij idea呢?原因有三 1.以前公司的项目 在myeclipse10中不稳定 myeclipse说不定什么时候就崩溃卡死了 而intellij很稳定 2.界面高端洋气 用我朋友的话说 看着跟搞...

蛙牛
2013/11/17
0
11
SpringBoot基础教程1.1.1 项目搭建

概述 为微服务而生,大大简化搭建工程的时间;个人理解,是一些框架的集合, 整合各个框架,降低使用门槛。 1.1. 特色 介绍项目的同时,推荐相关快捷键,熟能生巧,无需死记硬背。 2. 本节重...

Mkeeper
07/02
0
0
IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架

温馨提示:本教程的 GitHub 地址为「intellij-idea-tutorial」,欢迎感兴趣的童鞋、,纠错。 在「详述 IntelliJ IDEA 创建 Maven 项目及设置 java 源目录的方法」一文中,我们已经将 Intell...

qq_35246620
04/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud Gateway 接口文档聚合实现

在微服务架构下,通常每个微服务都会使用Swagger来管理我们的接口文档,当微服务越来越多,接口查找管理无形中要浪费我们不少时间,毕竟懒是程序员的美德。 由于swagger2暂时不支持webflux 走...

冷冷gg
31分钟前
13
0
流利阅读笔记30-20180719待学习

1.今日导读 2.带着问题听讲解 3.新闻正文(中英文对照) 4.重点词汇 5.拓展内容

aibinxiao
33分钟前
1
0
OSChina 周五乱弹 —— 我们是食物链的最底层

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @温家成 :分享谢安琪的单曲《姿色份子》 《姿色份子》- 谢安琪 手机党少年们想听歌,请使劲儿戳(这里) @贪吃飒:最近p2p怎么了、半个月爆了...

小小编辑
47分钟前
6
1
Android Studio 3.0 之后打包apk出现应用未安装问题

1、废话 出现这个问题的原因,并不是只有一个,而是有多个原因,不懂的估计会被搞得一头雾水,下面我列举的是我遇到的几种问题和网友遇到的几种问题,但不一定是全部,也有可能有些莫名其妙的...

她叫我小渝
今天
0
0
前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
9
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部