SpringMVC、MyBatis框架整合开发项目的简单说明(使用框架说明)

本文介绍如何整合SpringMVC与MyBatis框架,实现前后端分离的项目开发。涵盖配置步骤、核心代码解析及登录功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   

    最近由于项目需要,开始接触SpringMVC框架的开发。使用过之后,发现这种框架的思想

 非常有利于业务型系统的开发和维护,所以想写篇博客记录下使用过程中的一些心得。

    关于框架源码我还没来得及研究,因为项目比较紧,当初只是从别的项目拿来了这一套框

 架使用,所以这篇博客更多的是使用该框架的心得。下面开始正题。

    首先先将框架项目导编译器,我用的是Eclipse Java EE IDE for Web Developers。图标长这样:

 我们需要将使用spring框架的工程导入,在项目工程栏处(最左侧)右键—>Import—>Existing Projects into Workspace

 —>Browse选择要导入的工程—>finish就将工程导入进来了。

如图:

 

 

 

    然后我们在tomcat中配置一下该工程,在这个叶签中右键,

new—>server—>tomcat6.0(我用的是tomcat6.0)—>

你的工程,加载到右边—>finish。这样该工程在tomcat中就配置完成了,如图:

 

 

    然后我们需要在tomcat中修改数据库连接,因为是别人的项目,所以我需要连上自己的数据库。

    当工程在tomcat中配置完成时,会出来一个server文件夹:,在里面的context.xml文件中添加上连接字符串的

代码:<Resource auth="Container"

        driverClassName="oracle.jdbc.driver.OracleDriver" 
        maxActive="100" 
        maxIdle="30" 
        maxWait="5000" 
        name="jdbc/数据库名称" 
        password="登录密码" 
        type="javax.sql.DataSource" 
        url="jdbc:oracle:thin:@数据库地址:1521:数据库名称" 
        username="登陆账户名"/>

然后保存就可以了。

    下面我们开始搭建框架。首先我们先找到工程里面的/WebRoot/WEB-INF/web.xml文件,在这个文件里面我们可以看到两个

需要配置的文件:

找到这两个文件,一般都是在/src/config底下,我们先打开applicationContext-common.xml文件,以下几个配置很重要:

<context:component-scan base-package="com.aa.bb.service.*" /><!-- 映射service接口层 -->

<!-- 加载properties配置文件 --> 
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations" value="classpath:config/*.properties" /> 
</bean>

<!-- 数据源 --> 
<bean id="dataSource" name="dataSource" 
class="org.springframework.jndi.JndiObjectFactoryBean"> 
<property name="jndiName" value="java:comp/env/jdbc/数据库名称" /> 
</bean>

<!-- 配置SqlSessionFactoryBean --> 
<bean class="org.mybatis.spring.SqlSessionFactoryBean"> 
<property name="dataSource" ref="dataSource" /> 
<property name="mapperLocations" 
value="classpath*:/com/aa/bb/dao/mapper/*Mapper.xml" /> <!-- 映射MyBatis数据库查询层 -->
<property name="typeAliasesPackage" value="com.aa.bb.model" /> <!-- 映射JavaBean -->
<property name="configLocation" value="/WEB-INF/classes/config/mybatis.xml"/> 
</bean>

<!-- 配置事务管理器 --> 
<bean id="transactionManager" 
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
<property name="dataSource" ref="dataSource" /> 
</bean> 
<!-- 配置事务的传播特性 --> 
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> 
<property name="transactionManager" ref="transactionManager"/> 
<property name="transactionAttributes"> 
<props> 
<prop key="add*">PROPAGATION_REQUIRED</prop> 
<prop key="edit*">PROPAGATION_REQUIRED</prop> 
<prop key="remove*">PROPAGATION_REQUIRED</prop> 
<prop key="insert*">PROPAGATION_REQUIRED</prop> 
<prop key="update*">PROPAGATION_REQUIRED</prop> 
<prop key="del*">PROPAGATION_REQUIRED</prop> 
<prop key="*">readOnly</prop> 
</props> 
</property> 
</bean>

<!-- 通过扫描的模式,扫描Mapper --> 
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
<property name="basePackage" value="com.aa.bb.dao" /> <!-- 通过dao层映射mybatis中的查询语句 -->

</bean>

以上这些配置现在看起来头大不要紧,一会到具体项目中的时候,就知道他们的用处了。

    然后我们接着打开dispatcher-servlet.xml文件,在这个文件里面,主要配置上以下代码:

<context:component-scan base-package="com.foresea-life.cc.*"(package包路径) /> 
<bean id="viewResolver" 
class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
<property name="viewClass" 
value="org.springframework.web.servlet.view.JstlView" /> 
<property name="prefix" value="/WEB-INF/views/" /> 
<property name="suffix" value=".jsp" /> 
</bean> 

<mvc:annotation-driven /> 
<mvc:resources mapping="/resource/**" location="/resource/" />

上面这段代码主要用于后端控制器映射到前段JSP页面的。

    然后在mybatis.xml文件中就配置上数据库类型就可以了,如:<property name="databaseType" value="oracle"/>

    好了,关于框架的配置现在基本完成了,咱们现在就开始来进行具体业务逻辑是如何使用该框架来实现的讲解。

咱们以系统登录为例来讲解一下。

    在开始之前,大家先眼熟这些词:

    1、@controller 控制器(注入服务)

<span style="color:#ff0000"><strong>   2、@service 服务(注入dao)</strong></span>
<span style="color:#ff0000"><strong>   3、@repository dao(实现dao访问)</strong></span>
<span style="color:#ff0000"><strong>   4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)</strong></span>

    首先,我们先编写一个简单的前端登录页面:login.jsp。该页面就两个文本录入框,登录账户userCode,登录密码passWord,

一个登录按钮,比较简单,我就不列出代码了。

 

 

    然后我们编写一个javabean,用来存储一些登录需要用到的字段。在src底下新建一个包com.aa.bb.model,在包中新建一个类

UserBean,在类中定义两个字段:private String userCode; private String passWord;

    并定义它们的get、set方法。大家注意到没有,这里的字段和页面上的字段大小写是严格对应的,这样,我们一会从页面获取用

户输入的账户名密码的时候,就不用再做额外传值的操作,直接可以将页面的值映射到这个userbean中,在后台直接用userbean就可

以取到值。

 

 

    然后我们需要编写一个控制器来控制它跳转到这个页面(记住spring框架的实现都是通过控制器来处理

各种各样的请求)。我们在src底下新建一个包:com.aa.bb.controller,然后在包中新建一个类IndexController.java:

    @Controller //这个就是刚才前面的applicationContext-common.xml文件配置起了作用,是一种自动扫描机制

    public class IndexController { 

        @RequestMapping(value="/") //这个就是刚才前面的applicationContext-common.xml文件配置起了作用,是一种自动扫描机制
        public String index(HttpServletRequest request,HttpServletResponse response,Model model){ 
        return "login"; //控制页面跳转到login.jsp页面中,这个就是dispatcher-servlet.xml配置起的作用
    }

}

这样,当我们在浏览器上输入http://localhost:8080/cc(最后这个cc需要在tomcat中配置这个地址,配置方法是:在server中

双击

 

然后在弹出页面中选红框中的path修改就好了,改成什么

就在http://localhost:8080/这个后面接什么就行)时,会进入控制器IndexController.java的index()方法中,为什么呢?因为这个

@RequestMapping(value="/"),一个斜杠就是项目首页的意思,就是你只要输入网址,就会自动映射到一个斜杠标记的方法,所以一

个项目只能有一个首页,否则有可能会无法识别。然后在index()方法中跳转到login.jsp中,在页面上录入账号密码,点击登录,调

用js方法:

saveAction(){

    $('#loginForm').form({

        url : '/login.do', 
        onSubmit : function() { 
            return docheck(); 
        }, 
        success : function(data) { 
                $('.waitemode').hide(); 
        if (data == "success") { 
                window.location.href = "/index.do"; 
        }else{ 
            $("#password").val(""); 
            $("#password").focus(); 
            return; 
        } 
      } 
    }); 
  }

}

    大家看到这段代码,肯定会说/login.do和/index.do这是什么鬼?有经验的开发工程师应该猜到这其实又是映射,没错,这也是

控制器中映射。下面我们在控制器包底下新建一个登录的控制器LoginController.java:

    @Controller

    public class UserController { 

    @Autowired 
    private UserBusinessService userBusinessService; 

    /** 
    * 用户登录 
    * 
    * @param res 
    * @param user 
    * @throws Exception 
    */ 
    @RequestMapping(value = "/login.do") 
    public void login(HttpServletRequest request, HttpServletResponse response,UserBean userbean) { 
        WebUtil.print(response, userBusinessService.login(request, userbean)); 
    }

}

    大家这里可以看到/login.do又对应了控制器中login()方法,至于WebUtil.print()这个是个公共方法来的,用来返回

数据给前台,大家就不要在意了,用你们自己的公共类方法就行了。而UserBusinessService这就是service层的接口,@Autowired

这个东西呢,是一种spring框架的注入式,根据类型自动装配,有很多关于这方面的书籍资料,大家可以在网上和书上查阅,因为

如果在这里说的话,要花很大的篇幅。所以我们新建一个com.aa.bb.service包,在包里新建一个接口UserBusinessService,在里面

写一个方法public String login(HttpServletRequest request,UserBean userbean);

    既然有接口,那么一定就有接口实现。新建一个包com.aa.bb.service.impl,在包中新建一个接口实现类

UserBusinessServiceimpl.java,在这个实现类中,大家可以写自己项目中的具体业务逻辑,也就是业务逻辑层,像现在咱们这个

登录的一些基本校验,我们就可以写在这个类中:

    @Component("userBusinessService") //这里的@Component同理,大家可以在网上查到资料
    public class UserBusinessServiceImpl implements UserBusinessService {

   

           @Autowired

           private UserDao userdao;           

 

           public String login(HttpServletRequest request, UserBean userbean) {

                //从userbean中取出userCode和passWord判断是否为空,如果不为空,则将账号密码放到数据库

                //中判断,看用户名密码是否正确。

                List<UserBean> listUser=userdao.queryUser(userbean);

                //这里的userdao就是数据库接口层,新建com.aa.bb.dao包,新建一个接口UserDao.java,定义一个

                //方法public List<UserBean> queryUser(UserBean userbean);

        }

    }

    然后我们新建一个包com.aa.bb.dao.mapper。在包中新建一个xml文件UserDaoMapper.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"> 

    <mapper namespace="com.foresealife.cc.dao.UserDao">

    <select id="queryUser" parameterType="UserBean" resultMap="userResultMap">

        SELECT userCode,passWord FROM hjuser t where 1=1

        <if test="userCode!=null and userCode!=''">

            and t.userCode = #{userCode,jdbcType=VARCHAR}

        </if>

        <if test="passWord!=null and passWord!=''">

            and t.passWord = #{passWord,jdbcType=VARCHAR}

        </if>

    </select>

    大家应该发现了,<select>标签中的id对应的是正是dao层接口中的方法名,这样根据dao层接口中的方法,就可以找到

相应的sql语句,这就是springMVC框架与mybatis框架的整合,也是在applicationContext-common.xml中配置的结果。<select>

标签中parameterType属性是表示传进来的参数,resultMap属性是表示sql的返回值。

    这样我们就能实现具体的增删改查操作了。

    好了,这就是springMVC框架与mybatis框架整合的基本使用,可能说的比较乱,毕竟语文是体育老师教的...

    最后我总结一下各个模块的作用,希望能加深印象。

    com.aa.bb.controller    控制器层,编写controller类处理请求(UserController.java)

    com.aa.bb.model         javabean模块,存放数据(UserBean.java)

    com.aa.bb.service       业务逻辑接口层(UserBusinessService.java)

    com.aa.bb.service.impl  业务逻辑接口具体实现层(UserBusinessServiceImpl.java)

    com.aa.bb.dao           操作数据库接口层(UserDao.java)

    com.aa.bb.dao.mapper    数据库具体实现xml(UserDaoMapper.xml)

 

 

 

 

如果我的文章有帮助到您,欢迎打赏一下鼓励博主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值