SSM框架——Spring+SpringMVC+MyBatis整合测试案例

SSM框架——Spring + SpringMVC + MyBatis整合测试案例

1、MVC概念

可以简单理解为控制器C和视图V之间的实体类M的交互;而controller表示层、services业务逻辑层、dao数据操纵层,称作java的三层结构,实体类不属于任何一层

2、创建maven工程

选maven-archetype-webapp

3、依赖包导入

Spring导包较多,要注意统一版本

  • mysql-connector-java
  • mybatis、mybatis-spring
  • spring-core、spring-context、spring-beans(BeanFactory,不用new)、spring-webmvc、spring-tx(事务相关)、spring-jdbc
  • jackson-core、jackson-databind、jackson-annotations(注释)
  • commons-dbcp

4、目录结构

main下面新建java目录作为source root,在里面建三层结构和实体类;新建resources资源包,在里面创建spring.xml文件。结构如下

image-20210320221102021

5、spring.xml配置

5.1、修改spring.xml头部信息

  • xmlns为初始化bean的格式文件地址,复制三份出来:分别添加context、tx、mvc,前面增加,后面替换beans内容,样式如下:

  • <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
    
  • xmlns:xsi:辅助初始化bean,此处不用管

  • xsi:context:关于spring上下文,包括加载资源文件(本例无)

  • xsi:schemaLocation:用于声明了目标名称空间的模式文档,复制三份出来,每份替换beans为context、tx、mvc各三处,注意复制的内容均要在双引号内

  • http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    

5.2、spring.xml内容配置

5.2.1、开启自动扫描,指定到要扫的包的上一层(一直至少三层),即可自动扫描java工程里的类

    <context:annotation-config></context:annotation-config>
    <context:component-scan base-package="com.kgc.myweb01"></context:component-scan>

5.2.2、开启数据库链接

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://singlelinux:3306/mydemo"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root"></property>
</bean>

5.2.3、开启自动事务

配置ref="dataSource"引用上面的配置

上面为事务管理器,下面的为开启事务,使用注释语法自动开启

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

5.2.4、开启spring和mybatis整合

新建一个mapper配置文件,头部如果记不住的话,可以在IDEA里设置快捷键settings,editor,live templates,add group,底面change指定应用地方,define,后面只要输入快捷键即可

classpath代表当前资源文件夹里的xml全都扫描到

MapperScannerConfigurer:扫描器,mybatis里自动把接口当做类用,不过只能new DAO接口,其他不可以

<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>

    <property name="mapperLocations" value="classpath*:mapper/*.xml"></property>
</bean>
<bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.kgc.myweb01.dao"></property>
</bean>

4.2.5、开启将用户的实体数据转为json格式的功能

<mvc:annotation-driven></mvc:annotation-driven>

5.2.6、配置总结

通篇文件配置,仅以下三处需要修改,其他均为常规套路模板

java工程扫描包:base-package=""
数据库config的四个基本配置:BasicDataSource
resource扫描dao接口:value=""

6、进入webapp,修改其中的web.xml

6.1、将spring.xml设置为全局变量

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
</context-param>

6.2、设置中文编码

filter:设置字符集编码过滤器

filter-mapping:设置任何请求均使用此过滤器

<filter>
    <filter-name>charset</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>charset</filter-name>
    <url-pattern>*</url-pattern>
</filter-mapping>

6.3、设置和启动Spring的核心监听器

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

6.4、启动spring的MVC

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
    </init-param>
</servlet>

6.5、设置控制器的Java类后缀名

但凡链接地址调什么.do,就会自动去找控制器底下的.do方法

<servlet-mapping>
  <servlet-name>spring</servlet-name>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>

6.6、总结:web.xml也基本上是个写死的文件,除了spring.xml

7、java工程

7.1、dao

public interface UserinfosDAO {
    
    
    List<Userinfos> findAll();
}

7.2、entity

public class Userinfos {
    
    
    private int userid;
    private String username;
    private Date birthday;
 	...(因不需要new,因此不需要构造器,仅getter和setter即可)   
}    

7.3、services

此处用到注解有:Service、Transactional、Autowired

@Service //自动实例化接口对象
@Transactional //开启自动事务,自动commit了,无需再手动
public class UsersService {
    
    
    //services层直接调用dao层的方法,因为上面已经使用注解@Service new了dao的对象,此处只需要使用@Autowired调出来即可
    @Autowired
    private UserinfosDAO udao;

    public List<Userinfos> searchAll(){
    
    
        return udao.findAll();
    }
}

7.4、controller

//@Controller  //实例化对象,暴露接口
@RestController  //暴露接口,一般传出去为json数据
public class InitCtrl {
    
    
    //呼叫services层
    @Autowired //自动装配
    private UsersService usersService;


    //怎么找到这个方法,因为比如说网页,是找不到java类的,因此需要java类主动去暴露
    @RequestMapping("/users.do") //在网页地址栏上写个XXX.do,就会调用这个方法
    public List<Userinfos> init(){
    
    
        return usersService.searchAll();
    }
}

7.6、写sql语句

mybatis里的操作了

创建resources.mapper.userinfos.xml文件,重写findAll方法

<?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.kgc.myweb01.dao.UserinfosDAO">
    <select id="findAll" resultType="com.kgc.myweb01.entity.Userinfos">
        select * from userinfos
    </select>
</mapper>

8、配置运行环境并运行

以上内容都配置完之后,我们发现还缺一个main方法执行,此处我们不用main方法,把工程编译好之后放在Tomcat中运行

8.1、Tomcat 8.5.64下载完之后,解压安装到windows上

8.2、点击Add Configuration,添加Tomcat Server,此处我们选本地Local模式

image-20210320235350830

8.3、修改Name,编辑Configuration路径为Tomcat的根目录

image-20210320235554236

8.4、部署项目到Tomcat

image-20210320235752054

8.5、返回Server界面,修改手动触发更新操作和当idea失去焦点时,idea的默认操作为为更新java类,jsp和静态资源文件

image-20210321000003251

8.6、修改URL子页面地址为自己想要的地址

image-20210321002254055

8.7、点击执行,即可看到网页自动弹出,此时未调用配置里的user.do方法

image-20210321002431064

8.8、调用users.do即可

image-20210321002640945

至此,spring暴露数据库接口的案例测试完毕,恭喜!

猜你喜欢

转载自blog.csdn.net/xiaoxaoyu/article/details/115038159
今日推荐