Vue+springmvc+mybatis前后端分离学习---(一)Spring与Mybatis各自单独搭建使用总结

背景:我的毕业设计是一套基于Java的在线学习平台,用的是纯纯的JSP、JDBC以及Mysql,各种前后台代码一通杂糅,煎熬完成毕设后也没有真正用SSM做过完整项目,不如就给毕设来个2.0吧。

第三章传送门—>前端搭建与跨域解决
第二章传送门—>Spring与Mybatis整合思路

本次后端系统选用IDEA进行开发,相关jar包通过Maven坐标导入

本章先单个配置Mybatis以及spring框架并进行运作,过程中思考mbatis的哪些对象可以交给spring来控制以便后期三位一体后进行注入。
一、 IDEA创建工程
1.首先打开IDEA,已有的工程是我学习时用的工程,请忽视。

在这里插入图片描述

2.新建一个module。

在这里插入图片描述

3.点击Maven,选择我们的jdk,再勾选使用模板创建,最后选择maven-xxx-webapp这一项。

在这里插入图片描述

4.输入项目名,点击下一步,进入此页面 需要将maven从默认选项改为我们自己的本地仓库,点击完成。

在这里插入图片描述

5.这时候发现明明选了模板也BUILD SUCCESS了却只有个pom文件,这种情况需要点击红框所示的import Changes来导入改动。

在这里插入图片描述

6.导入之后就是如图所示的连个java文件夹都没有的工程结构,到这里咱们的进度就一样了,继续右键main,新建java与resources文件夹。

在这里插入图片描述

在这里插入图片描述

7.新建时点击Directory之后,IDEA会推荐出这两个文件夹,直接点击就可以自动生成,如下图。

在这里插入图片描述

8.最终,我们的目录结构就是这样的:

在这里插入图片描述

二、单独搭建Mybatis框架
1.在pom.xml中导入Mybatis所需坐标并点击import changes。
<dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.12</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.6.6</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.6.6</version>
    </dependency>
	<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.6</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>

    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>
    
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>RELEASE</version>
      <scope>compile</scope>
    </dependency>
    
    <dependency>
      <groupId>com.lowagie</groupId>
      <artifactId>itext</artifactId>
      <version>4.2.2</version>
    </dependency>
2.在Resources文件夹中新建并配置SqlMapConfig.xml文件,各项作用请参考注释,其中mappers中若我们的sql用xml来写就是注册package,若是我们用注解的话注册的就是类,本次我们采用xml所以需要把dao所在的包路径进行注册。
<?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>

    <!-- 配置数据库信息 我的数据库是mysql-->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/tmsystem"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>

            </dataSource>
        </environment>
    </environments>

    <!--引入映射配置文件 -->
    <mappers>
        <package name="com.lx.dao"/>
    </mappers>
</configuration>
3.这时右键java创建package,输入com.lx.dao,当然就算只输个a也行,不过第二步的name要记得改成a,项目结构此时如下图。

在这里插入图片描述

4.这时创建一个dao接口userDao,就写一个查询总数的方法,主要目的是为了测试框架有没有运作。
package com.lx.dao;

/**
 * 用户
 */
public interface UserDao {

    /*
    查询user表总数
     */
    public int userCount();
}

5.创建完接口之后就需要配置xml文件,此时java代码侧从java文件夹开始的UserDao.java的路径,xml侧从resources文件夹开始到UserDao.xml的路径,一定要相同。此处的sql根据我们自身的表改变,id就是我们dao的方法名。

在这里插入图片描述

6.现在我们有了dao,有了mapper,就差让框架帮我们做事了,右键src文件夹来创建一个test文件夹,并在test文件夹中创建Demo01入口程序,因为test文件夹下的代码打包不会被编译,所以最好把和项目无关的代码放进这里。
7.每一句的作用在注释里,如此我们运行测试就可以得到结果,没有log的配置先无视,这样Mybatis就先配置成功了,如下图。

在这里插入图片描述

图中代码如下:
import com.lx.dao.UserDao;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;

/**
 * Mybatis测试类
 */
public class Demo01 {

    @Test
    public void test() throws IOException {

        //读取配置文件 并 创建SqlSessionFactory
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

        SqlSessionFactory sessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("SqlMapCinfig.xml"));

        //获取会话对象
        SqlSession sqlSession = sessionFactory.openSession();

        //强化Dao
        UserDao userDao = sqlSession.getMapper(UserDao.class);

        //执行方法
        System.out.println(userDao.userCount());
    }
}

8.之后,我们进行三合一之后就利用spring来帮我们控制需要的factory以及session等对象,再将dao注入到service中,再将service注入到controller中,如此我们就可以不用再手动弄个测试类或者在controller中写像上面一样的代码了。
三、单个搭建spring框架
1.导入spring坐标。
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
2.创建一个Student类,该生可以吃饭,一会通过spring来进行获取。
package com.lx;

/**
 * 这是学生
 */
public class Student {

    public void eat(){
        System.out.println("吃吃吃");
    }
}

3.在Resources文件夹中创建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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
			    http://www.springframework.org/schema/beans/spring-beans.xsd
			    http://www.springframework.org/schema/context
			    http://www.springframework.org/schema/context/spring-context.xsd
			    http://www.springframework.org/schema/aop
			    http://www.springframework.org/schema/aop/spring-aop.xsd
			    http://www.springframework.org/schema/tx
			    http://www.springframework.org/schema/tx/spring-tx.xsd
			    http://www.springframework.org/schema/mvc
			    http://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<!-- 将学生对象注册进容器 -->
    <bean id="student" class="com.lx.Student"/>
</beans>

4.继续在test类中写测试方法,通过spring获取学生对象。
@Test
    public void test2(){

        //获取applicationContext对象
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

        //获取Student对象
        Student student = applicationContext.getBean("student",Student.class);

        //吃饭
        student.eat();
    }
小结:到这我们就把mybatis和spring各自单独的运作起来了,我们发现了mybatis的工厂对象,会话对象以及我们自己写的dao对象其实可以想办法交给spring来控制,而sqlSessionFactory所需的driver、username等属性可以通过spring来属性注入,有了这些概念我们就可以大概想来为什么说spring是润滑剂了,下章我们开始三位一体。(其实可以说是两位一体,毕竟spring和springmvc本来就是无缝衔接的)

第二章传送门->Spring与Mybatis整合思路总结
“没什么难的,不要忘记呼吸”
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值