实战_02_Spring SpringMVC 整合Mybaits

接上一篇:企业实战_01_Spring SpringMVC 整合Mybaits
https://blog.csdn.net/weixin_40816738/article/details/101343414

文章目录

  • 一、数据库操作
    • 1.1. 创建数据库
    • 1.2. 表结构
  • 二、整合实战
    • 2.1. 整合思路
      • 2.1.1. Dao层
      • 2.1.2. service层
      • 2.1.3. Dao层表现层
    • 2.2. Dao整合
      • 2.2.1. 创建SqlMapConfig.xml配置文件
      • 2.2.2. Spring整合mybatis
    • 2.3. Service整合
    • 2.4. 事务管理
    • 2.5. 表现层整合
    • 2.6. Web.xml

一、数据库操作

1.1. 创建数据库

  • Navicat Premium 12 创建数据库——方案1
    在这里插入图片描述
    在这里插入图片描述
  • 命令版本——方案2
  • 命令简单的演示了创建数据库的过程,数据名为 ly:
[root@host]# mysql -u root -p   
Enter password:******  # 登录后进入终端mysql> create DATABASE ly;
  • IntelliJ IDEA 2019.1 创建数据库

1.2. 表结构

#使用ly数据库
use ly;
#删除已经存在的tb_item表
DROP TABLE IF EXISTS `tb_item`;
#创建tb_item表
CREATE TABLE `tb_item` (`id` bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',`title` varchar(100) NOT NULL COMMENT '商品标题',`sell_point` varchar(500) DEFAULT NULL COMMENT '商品卖点',`price` bigint(20) NOT NULL COMMENT '商品价格,单位为:分',`num` int(10) NOT NULL COMMENT '库存数量',`barcode` varchar(30) DEFAULT NULL COMMENT '商品条形码',`image` varchar(500) DEFAULT NULL COMMENT '商品图片',`cid` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',`created` datetime NOT NULL COMMENT '创建时间',`updated` datetime NOT NULL COMMENT '更新时间',PRIMARY KEY (`id`),KEY `cid` (`cid`),KEY `status` (`status`),KEY `updated` (`updated`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';

二、整合实战

2.1. 整合思路

2.1.1. Dao层

Mybatis的配置文件:SqlMapConfig.xml
不需要配置任何内容,需要有文件头。文件必须存在。
applicationContext-dao.xml:
mybatis整合spring,通过由spring创建数据库连接池,spring管理SqlSessionFactory、mapper代理对象。
需要mybatis和spring的整合包。

2.1.2. service层

applicationContext-service.xml:
所有的service实现类都放到spring容器中管理。并由spring管理事务

2.1.3. Dao层表现层

Springmvc框架,由springmvc管理controller。
Springmvc的三大组件

2.2. Dao整合

2.2.1. 创建SqlMapConfig.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration></configuration>

2.2.2. Spring整合mybatis

创建applicationContext-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"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-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"><!-- 数据库连接池 --><!-- 加载配置文件 --><context:property-placeholder location="classpath:conf/db.properties"/><!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="driverClassName" value="${jdbc.driver}"/><property name="maxActive" value="10"/><property name="minIdle" value="5"/></bean><!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 --><property name="dataSource" ref="dataSource"/><!-- 加载mybatis的全局配置文件 --><property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"/></bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.gblfy.mapper"/></bean>
</beans>

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ly?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

2.3. Service整合

applicationContext-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"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-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"><context:component-scan base-package="com.gblfy.service"/>
</beans>

2.4. 事务管理

创建applicationContext-trans.xml

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"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-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"><!-- 事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 数据源 --><property name="dataSource" ref="dataSource"/></bean><!-- 通知 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 传播行为 --><tx:method name="save*" propagation="REQUIRED"/><tx:method name="insert*" propagation="REQUIRED"/><tx:method name="add*" propagation="REQUIRED"/><tx:method name="create*" propagation="REQUIRED"/><tx:method name="delete*" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED"/><tx:method name="find*" propagation="SUPPORTS" read-only="true"/><tx:method name="select*" propagation="SUPPORTS" read-only="true"/><tx:method name="get*" propagation="SUPPORTS" read-only="true"/></tx:attributes></tx:advice><!-- 切面 --><aop:config><aop:advisor advice-ref="txAdvice"pointcut="execution(* com.gblfy.service.*.*(..))"/></aop:config>
</beans>

2.5. 表现层整合

springmvc.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-4.2.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"><context:component-scan base-package="com.gblfy.controller" /><mvc:annotation-driven /><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean>
</beans>

2.6. Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><!--web项目名称--><display-name>ly-web</display-name><!--欢迎页面--><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 加载spring容器 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext-*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 解决post乱码 --><filter><filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- springmvc的前端控制器 --><servlet><servlet-name>ly-manager</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>ly-manager</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

需求:
根据商品id查询商品信息,返回json数据。

entity

package com.gblfy.entity;import java.util.Date;public class TbItem {private Long id;private String title;private String sellPoint;private Long price;private Integer num;private String barcode;private String image;private Long cid;private Byte status;private Date created;private Date updated;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title == null ? null : title.trim();}public String getSellPoint() {return sellPoint;}public void setSellPoint(String sellPoint) {this.sellPoint = sellPoint == null ? null : sellPoint.trim();}public Long getPrice() {return price;}public void setPrice(Long price) {this.price = price;}public Integer getNum() {return num;}public void setNum(Integer num) {this.num = num;}public String getBarcode() {return barcode;}public void setBarcode(String barcode) {this.barcode = barcode == null ? null : barcode.trim();}public String getImage() {return image;}public void setImage(String image) {this.image = image == null ? null : image.trim();}public Long getCid() {return cid;}public void setCid(Long cid) {this.cid = cid;}public Byte getStatus() {return status;}public void setStatus(Byte status) {this.status = status;}public Date getCreated() {return created;}public void setCreated(Date created) {this.created = created;}public Date getUpdated() {return updated;}public void setUpdated(Date updated) {this.updated = updated;}
}

创建接口:
TbItemMapper

package com.gblfy.mapper;import com.gblfy.entity.TbItem;
import com.gblfy.entity.TbItemExample;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;import java.util.List;public interface TbItemMapper {/*注解形式*/@Select("SELECT * FROM tb_item")List<TbItem> getList();/*xml形式*/int countByExample(TbItemExample example);int deleteByExample(TbItemExample example);int deleteByPrimaryKey(Long id);int insert(TbItem record);int insertSelective(TbItem record);List<TbItem> selectByExample(TbItemExample example);TbItem selectByPrimaryKey(Long id);int updateByExampleSelective(@Param("record") TbItem record, @Param("example") TbItemExample example);int updateByExample(@Param("record") TbItem record, @Param("example") TbItemExample example);int updateByPrimaryKeySelective(TbItem record);int updateByPrimaryKey(TbItem record);
}

TbItemMapper.xml

略(源码有)
服务接口

package com.gblfy.service;import com.gblfy.entity.TbItem;
import java.util.List;public interface ItemService {TbItem getItemById(long itemId);List<TbItem> getItemlist();
}

impl

package com.gblfy.service;import com.gblfy.entity.TbItem;
import com.gblfy.mapper.TbItemMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** @author gblfy* @ClassNme ItemServiceImpl* @Description TODO* @Date 2019/9/25 13:00* @version1.0*/
@Service
public class ItemServiceImpl implements ItemService {@Autowiredprivate TbItemMapper itemMapper;@Overridepublic TbItem getItemById(long id) {TbItem item = itemMapper.selectByPrimaryKey(id);return item;}@Overridepublic List<TbItem> getItemlist() {List<TbItem> list = itemMapper.getList();return list;}}

controller

package com.gblfy.controller;import com.gblfy.entity.TbItem;
import com.gblfy.service.ItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** @author gblfy* @ClassNme ItemController* @Description TODO* @Date 2019/9/25 12:59* @version1.0*/
@RestController
public class ItemController {@Autowiredprivate ItemService itemService;/*** 通过id获取商品信息* 测试链接:http://localhost:8080/item/1** @param itemId* @return*/@RequestMapping("/item/{itemId}")private TbItem getItemById(@PathVariable Long itemId) {TbItem tbItem = itemService.getItemById(itemId);return tbItem;}@RequestMapping("/item/list")private List<TbItem> getItemList() {List<TbItem> itemlist = itemService.getItemlist();return itemlist;}
}

Gitlab源码:
https://gitlab.com/gb-heima/ly-parent

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化测试 之 “好用例、坏用例”

摘要&#xff1a; 自动化测试的重要性显而易见&#xff0c;但自动化测试又无法解决所有问题&#xff0c;所以说完全依赖自动化是不可能的&#xff0c;但完全没有自动化是万万不能。在软件开发项目中&#xff0c;重度依赖人力进行持续回归是一件非常枯燥的重复工作。企业需要花费…

重磅!Python又第一了!网友:为什么找不到好工作?真相让人脸红…

根据第 19 届 KDnuggets调查显示&#xff0c;Python 成数据分析、数据科学与机器学习的第一大语言。图片来源于第 19 届 KDnuggets软件大调查Python 在机器学习中的地位日益扩大&#xff0c;2017 年&#xff0c;机器学习中Python 的使用率超过 50%&#xff0c;今年则直接上升到…

Apache RocketMQ 深圳沙龙报名开启!

摘要&#xff1a; Apache RocketMQ深圳沙龙报名正式开启。12月16日&#xff0c;Apache RocketMQ将在深圳举办线下沙龙&#xff01;届时&#xff0c;社区里的PMC Member、Committer、深度用户&#xff0c;来自各路的资深专家汇聚一堂&#xff0c;就分布式消息引擎的最佳实践、性…

震惊!微软小冰公众号被封?示好国内,苹果拟推出特色版iPhone;谷歌更新Google Play支持名单:华为荣耀多款在列……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go AppsFlyer 针对中国移动互联…

如何基于OSS和MTS,快速搭建音视频文件上传服务?

摘要&#xff1a; 背景 本文主要介绍如何基于OSS服务和MTS的上传SDK&#xff0c;快速搭建一个音视频文件上传服务。 优势 使用MTS的上传SDK上传音视频文件&#xff0c;具有以下优势&#xff1a; 增加文件列表管理功能。 增加STS Token 超时更新功能。 背景 本文主要介绍如何基…

IntelliJ IDEA 2019.1 windows找不到文件‘chrome’

文章目录一、问题现象1. 用IntelliJ IDEA 2019.1 打开index.html,抛出以下错误2. 异常效果图二、解决方案&#xff1a;2.1.【打开设置】2.2. 搜索【web brow】2.3. 在桌面上找到google-【右击】-【属性】-【找到目标】-【双击】-【ctrla全选】-【ctrlc复制】2.4. 在红框中&…

新功能:阿里云负载均衡支持HTTP/2、WSS协议

摘要&#xff1a; 很高兴的告诉大家&#xff0c;阿里云负载均衡在欧洲中部&#xff08;法兰克福&#xff09;与亚太东南3&#xff08;吉隆坡&#xff09;地域支持HTTP/2、WSS&#xff08;Web Socket Secure&#xff09;协议。 1、HTTP/2协议支持 什么是HTTP/2 HTTP2是超文本传输…

wds linux,linux 无线组网方式 WDS功能

扩展你的无线网络&#xff1a;使用WDS扩展WDS设置无线分布式系统WDS(Wireless Distribution System)&#xff0c;在无线网络扩展中扮演着最重要的角色&#xff0c;它可以帮你轻松的实现无线到无线的扩展&#xff0c;而中间不必使用任何有线的连接&#xff0c;这在看中美观的家庭…

三十四载Windows崛起之路: 苹果、可视做过微软“铺路石”

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;姜洪军1982年11月的一天&#xff0c;赌城拉斯维加斯客流如织&#xff0c;有常见的闲散赌客&#xff0c;但更多的是来自计算机产业的专业人士&#xff0c;因为计算机领域的重要博览会Comdex在这里举行。27岁的比尔盖…

阿里云CDN直播架构与双11晚会直播实战

摘要&#xff1a; 分享人&#xff1a;阿里云CDN直播 高级技术专家 阙寒分享内容&#xff1a;双11直播活动是众多直播活动中非常典型的场景&#xff0c;离不开直播本身这个话题。所以今天的分享会从直播概述、直播架构、业务功能、直播监控、双11这几个方面来进行。 分享人&…

双11黑科技,阿里百万级服务器自动化运维系统StarAgent揭秘

摘要&#xff1a; 还记得那些年我们半夜爬起来重启服务器的黑暗历史吗&#xff1f;双11期间&#xff0c;阿里巴巴百万量级主机管理能安全、稳定、高效&#xff0c;如丝般顺滑是如何做到的&#xff1f;阿里巴巴运维中台技术专家宋意&#xff0c;首次直播揭秘阿里IT运维的基础设施…

查看大日志文件的专门工具logviewer

查看大日志文件的专门工具logviewer版本为官网2.3.1版本 文章目录一、百度网盘下载链接&#xff1a;二、操作手册2.1. 【file】-【Open】-【选择文件】-【打开】2.2. 文本可视化展示2.3. 编码选择2.4. 效果图2.5. 搜索功能一、百度网盘下载链接&#xff1a; 链接https://pan.b…

Android热修复升级探索——SO库修复方案

摘要&#xff1a; 通常情况下&#xff0c;大多数人希望android下热补丁方案能够做到补丁的全方位修复&#xff0c;包括类修复/资源修复/so库的修复。 这里主要介绍热补丁之so库修复思路。 一、前言 通常情况下&#xff0c;大多数人希望android下热补丁方案能够做到补丁的全方位…

中小企业搭建混合云,服务器如何选?

戳蓝字“CSDN云计算”关注我们哦&#xff01;经过一年多的发展Henry所在的NewStar公司的业务开始蒸蒸日上各种业务系统也越来越多、运营管理也开始越来越复杂公司所购买的“第一台服务器”逐渐力不从心业务中断时有发生Henry又回到了公司初期一筹莫展的状况中Henry脸上也是愁云…

基于TableStore构建简易海量Topic消息队列

摘要&#xff1a; 前言 消息队列&#xff0c;通常有两种场景&#xff0c;一种是发布者订阅模式&#xff0c;一种是生产者消费者模式。发布者订阅模式&#xff0c;即发布者生产消息放入队列&#xff0c;多个监听的消费者都会收到同一份消息&#xff0c;也就是每个消费者收到的消…

苹果ID登陆第三方有漏洞?硬核!Gartner报告腾讯云数据库增速国内第一;“小米快递”商标注册,这是要入局物流领域?...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 蔚来汽车&#xff08;图片来…

【阿里云MVP月度分享】SaaS服务商如何通过数加平台统计业务流量

摘要&#xff1a; 一、概述 因为自家公司是做B2B类Saas服务的&#xff0c;难免会产生精准计费的问题&#xff0c;所以在通过多套方案的选型及对比以后&#xff0c;我们最终确定了以下的方式进行自有业务平台的流量计算方案。因为涉及到具体的操作&#xff0c;所以阅读本文的前提…

【阿里云 MVP 月度分享】宋亚奇——应用MaxCompute实现电力设备监测数据的批量特征分析...

1 背景知识 电力设备在线监测指在不停电的情况下&#xff0c;对电力设备状况进行连续或周期性地自动监视检测&#xff0c;使用的技术包括&#xff1a;传感器技术、广域通信技术和信息处理技术。电力设备在线监测是实现电力设备状态运行检修管理、提升生产运行管理精益化水平的…

小企业的第一台服务器如何选?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Henry是一家叫做NewStar的初创小企业的兼职IT管理员一天晚间&#xff0c;下班后的Henry正在忙着“吃鸡”突然&#xff0c;一阵急促的电话铃声响了起来原来是在外地出差的同事需要一份重要的文件&#xff0c;但却无法远程访问服务器H…

Linux 中文无法显示或显示方块

文章目录问题现象&#xff1a;字体需求一、查看字体列表1. 安装字体库2. 字体库中添加中文字体3. 进入字体目录复制需求字体4. 创建中文字体目录5. 上传需求字体6. 修改chinese目录的权限7. 安装ttmkfdir8. 修改字体配置文件9. 刷新内存中的字体缓存问题现象&#xff1a; Linu…