Java之SSM框架整合-案例【IDEA版】(一篇文章精通系列)Spring+SpringMVC+MyBatis(整合源代码)

    • 1、创建数据库表
  • 2、创建Maven工程

  • 3、导入Maven坐标

  • 4、编写实体类

  • 5、编写Mapper接口

  • 6、编写MyBatisUtils工具类

  • 7、 编写Service接口

  • 8、编写Service接口实现

  • 9、编写Controller

  • 10、创建save.jsp页面

  • 11、accountList.jsp

  • 12、编写相应配置文件

  • 13、运行测试

  • 二、Spring整合MyBatis

    • 1、整合思路
  • 2、将SqlSessionFactory配置到Spring容器中,扫描Mapper,让Spring容器产生Mapper实现类

  • 3、配置声明式事务控制

  • 4、修改Service实现类代码

一、原生整合方式


1、创建数据库表

在这里插入图片描述

create database ssmtest;

CREATE TABLE account (

id int(11) NOT NULL AUTO_INCREMENT,

name varchar(100) NOT NULL,

money double(50,0) NOT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、创建Maven工程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

删除一些没有用的文件以及将缺少的文件创建出来

在这里插入图片描述

清空web.xml留下这些即可

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>

<web-app version=“2.4”

xmlns=“http://java.sun.com/xml/ns/j2ee”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”>

创建目录结构

在这里插入图片描述

在这里插入图片描述

3、导入Maven坐标

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>

4.0.0

war

itbluebox_ssm_demo

cn.itbluebox

itbluebox_ssm_demo

1.0.0-SNAPSHOT

org.apache.tomcat.maven

tomcat7-maven-plugin

2.1

8090

/

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

org.springframework

spring-context

5.0.5.RELEASE

org.aspectj

aspectjweaver

1.8.7

org.springframework

spring-jdbc

5.0.5.RELEASE

org.springframework

spring-tx

5.0.5.RELEASE

org.springframework

spring-test

5.0.5.RELEASE

org.springframework

spring-webmvc

5.0.5.RELEASE

javax.servlet

javax.servlet-api

3.0.1

provided

javax.servlet.jsp

javax.servlet.jsp-api

2.2.1

provided

org.mybatis

mybatis

3.4.5

org.mybatis

mybatis-spring

1.3.1

mysql

mysql-connector-java

5.1.6

c3p0

c3p0

0.9.1.2

junit

junit

4.12

jstl

jstl

1.2

4、编写实体类

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.domain;

public class Account {

private int id;

private String name;

private double money;

public Account() {

}

public Account(int id, String name, double money) {

this.id = id;

this.name = name;

this.money = money;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getMoney() {

return money;

}

public void setMoney(double money) {

this.money = money;

}

@Override

public String toString() {

return “Account{” +

“id=” + id +

“, name='” + name + ‘’’ +

“, money=” + money +

‘}’;

}

}

5、编写Mapper接口

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.mapper;

import cn.itbluebox.domain.Account;

import java.util.List;

public interface AccountMapper {

//保存账号数据

void save(Account account);

//查询账号数据

List findAll();

}

6、编写MyBatisUtils工具类

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.utils;

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 java.io.IOException;

import java.io.InputStream;

public class MyBatisUtils {

private static SqlSessionFactory sqlSessionFactory;

static {

InputStream is = null;

try {

is = Resources.getResourceAsStream(“SqlMapConfig.xml”);

sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

} catch (IOException e) {

e.printStackTrace();

} finally {

if (is != null) {

try {

is.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

/**

  • 获得SqlSession

*/

public static SqlSession openSqlSession() throws IOException {

return sqlSessionFactory.openSession();

}

/**

  • 提交释放资源

*/

public static void commitAndClose(SqlSession sqlSession) {

if (sqlSession != null) {

sqlSession.commit();

sqlSession.close();

}

}

/**

  • 回滚释放资源

*/

public static void rollbackAndClose(SqlSession sqlSession) {

if (sqlSession != null) {

sqlSession.rollback();

sqlSession.close();

}

}

}

7、 编写Service接口

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.service;

import cn.itbluebox.domain.Account;

import java.util.List;

public interface AccountService {

//保存账号数据

void save(Account account);

//查询账号数据

List findAll();

}

8、编写Service接口实现

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.service.impl;

import cn.itbluebox.domain.Account;

import cn.itbluebox.mapper.AccountMapper;

import cn.itbluebox.service.AccountService;

import cn.itbluebox.utils.MyBatisUtils;

import org.apache.ibatis.session.SqlSession;

import org.springframework.stereotype.Service;

import java.util.List;

@Service(“accountService”)

public class AccountServiceImpl implements AccountService {

@Override

public void save(Account account) {

SqlSession sqlSession = MyBatisUtils.openSqlSession();

AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);

accountMapper.save(account);

sqlSession.commit();

sqlSession.close();

}

@Override

public List findAll() {

SqlSession sqlSession = MyBatisUtils.openSqlSession();

AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);

return accountMapper.findAll();

}

}

9、编写Controller

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.controller;

import cn.itbluebox.domain.Account;

import cn.itbluebox.service.AccountService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.servlet.ModelAndView;

@Controller

public class AccountController {

@Autowired

private AccountService accountService;

@RequestMapping(“/save”)

@ResponseBody

public String save(Account account){

accountService.save(account);

return “save success”;

}

@RequestMapping(“findAll”)

public ModelAndView findAll(){

ModelAndView modelAndView = new ModelAndView();

modelAndView.setViewName(“accountList”);

modelAndView.addObject(“accountList”,accountService.findAll());

return modelAndView;

}

}

10、创建save.jsp页面

在这里插入图片描述

在这里插入图片描述

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

Title

保存账户信息表单

用户名称

账户金额


11、accountList.jsp

在这里插入图片描述

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

Title

展示账户数据列表

账户id 账户名称 账户金额

<c:forEach items=“${accountList}” var=“account”>

${account.id} ${account.name} ${account.money}

</c:forEach>

12、编写相应配置文件

  • Spring配置文件: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:aop=“http://www.springframework.org/schema/aop”

xmlns:tx=“http://www.springframework.org/schema/tx”

xmlns:context=“http://www.springframework.org/schema/context”

xsi:schemaLocation="http://www.springframework.org/schema/beans

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

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package=“cn.itbluebox”>

<context:exclude-filter type=“annotation”

expression=“org.springframework.stereotype.Controller”></context:exclude-filter>

</context:component-scan>

<context:property-placeholder location=“classpath:jdbc.properties”></context:property-placeholder>

  • SprngMVC配置文件:spring-mvc.xml

在这里插入图片描述

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:mvc=“http://www.springframework.org/schema/mvc”

xmlns:context=“http://www.springframework.org/schema/context”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation="http://www.springframework.org/schema/beans

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

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package=“cn.itbluebox.controller”></context:component-scan>

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

mvc:default-servlet-handler</mvc:default-servlet-handler>

  • MyBatis映射文件:AccountMapper.xml

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
r–>

<context:component-scan base-package=“cn.itbluebox.controller”></context:component-scan>

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

mvc:default-servlet-handler</mvc:default-servlet-handler>

  • MyBatis映射文件:AccountMapper.xml

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-8HTc9igV-1715368706354)]

[外链图片转存中…(img-2YDoYEw5-1715368706354)]

[外链图片转存中…(img-kdsibA9o-1715368706355)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的SSM框架整合SpringMVC的代码示例。这个示例使用了Spring Boot来快速搭建框架,但是SSM框架整合SpringMVC的步骤与之类似。希望这个示例能够帮助到你。 1. pom.xml文件中的依赖配置: ```xml <dependencies> <!-- Spring Boot web starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Boot test starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!-- MyBatis starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <!-- MySQL connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> </dependencies> ``` 2. application.properties配置文件中的配置项: ``` # 数据源配置 spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 # MyBatis配置 mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.entity # Spring MVC配置 spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp ``` 3. Spring的配置文件(application.xml)中的配置: ```xml <!-- 数据源配置 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="${spring.datasource.url}"/> <property name="username" value="${spring.datasource.username}"/> <property name="password" value="${spring.datasource.password}"/> </bean> <!-- MyBatis配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="typeAliasesPackage" value="com.example.demo.entity"/> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.demo.mapper"/> </bean> <!-- 事务配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> ``` 4. SpringMVC的配置文件(springmvc.xml)中的配置: ```xml <!-- ViewResolver配置 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="${spring.mvc.view.prefix}"/> <property name="suffix" value="${spring.mvc.view.suffix}"/> </bean> <!-- 静态资源配置 --> <mvc:resources location="/static/**" mapping="/static/**"/> <!-- RequestMappingHandlerMapping配置 --> <mvc:annotation-driven/> ``` 5. Mapper接口和Mapper.xml文件的实现: UserMapper.java ```java public interface UserMapper { User getUserById(int id); } ``` UserMapper.xml ```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.example.demo.mapper.UserMapper"> <select id="getUserById" parameterType="int" resultType="com.example.demo.entity.User"> select * from user where id = #{id} </select> </mapper> ``` 6. Controller类的实现: ```java @Controller @RequestMapping("/user") public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/{id}") @ResponseBody public User getUserById(@PathVariable int id) { return userMapper.getUserById(id); } } ``` 以上就是一个简单的SSM框架整合SpringMVC的代码示例。希望能够对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值