SpringMvc+Spring+JPA+Hibernate实现的增删改查

news2024/11/22 21:34:14

SpringMvc+Spring+JPA+Hibernate实现的增删改查

基于SSJ

12.1目录图

完整项目目录

12.2创建步骤

1.选择目录

2.选择基于的包结构

3.设置坐标。不能和已有的重复。

4.创建出来的包结构

5.自己配置tomcat,设置构建路径

下面进行依赖坐标导入。

12.3pom依赖

可以全设置5.3.24版本的spring-xxx

 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  
  <dependencies>
  <!--    servlet依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
       <!-- springspringmvc整合包  Spring 对于web的支持 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.2.5.RELEASE</version>
    </dependency>


    <!-- 引入SpringMvc的支持 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.2.5.RELEASE</version>
    </dependency>
    <!-- springjdbc的包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.2.5.RELEASE</version>
    </dependency>


    <!--
     SpringORM(JPA)整合的包
     集成ORM[对象,关系,映射]框架需要引入这个包
     -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</artifactId>
      <version>4.2.5.RELEASE</version>
    </dependency>

    <!-- hibernate核心包 -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>4.3.8.Final</version>
    </dependency>

    <!--hiberante对象jpa的支持包-->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>4.3.8.Final</version>
    </dependency>
    <!-- mysql数据库驱动包-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.12</version>
    </dependency>
    <!-- 连接池引入包-->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.2.2</version>
    </dependency>


    <!-- Spring测试的支持-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>4.2.5.RELEASE</version>
    </dependency>
    <!-- Springaop  引入Aop的织入包-->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.9</version>
    </dependency>
    <!-- 处理json的包  返回json的格式包-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.6.5</version>
    </dependency>
    <!-- junit测试包-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

12.4配置文件搭建

本实例采用的是xml配置的方式并非Java的配置方式

  • spring配置
  • springmvc配置
  • 数据源配置
  • web.xml配置

1.配置文件目录

2.jdbc.properties配置

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root

3.springmvc.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:mvc="http://www.springframework.org/schema/mvc"
       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/context
       http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 扫描controller  扫包才能使用注解-->
    <context:component-scan base-package="cn.lxz.controller"></context:component-scan>
    <!-- 静态资源放行-->
    <mvc:default-servlet-handler/>
    <!-- 扫描RequestMapping-->
    <mvc:annotation-driven/>
    <!-- 视图解析器-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

4.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:tx="http://www.springframework.org/schema/tx"
       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/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 扫描包的注解-->
    <context:component-scan base-package="cn.lxz.dao,cn.lxz.service"></context:component-scan>
    <!-- 指定位置去加载 jdbc.properties文件    classpath*  加上这一句才能找到(血的教训)   -->
    <context:property-placeholder location="classpath*:jdbc.properties"></context:property-placeholder>
    <!-- 配置连接池dataSource bean生命周期方法 销毁方法close 用来连接之后 还给链接池-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <!--导入数据库核心包-->
        <!--导入数据库驱动-->
        <property name="driverClassName" value="${jdbc.driverClassName}"></property>
        <!--配置数据库地址-->
        <property name="url" value="${jdbc.url}"></property>
        <!--配置数据库用户名-->
        <property name="username" value="${jdbc.username}"></property>
        <!--配置数据库密码-->
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!-- 得到EntityManagerFactory 方言 链接池-->
    <!-- 得到EntityManagerFactory-->

    <bean id="entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <!-- 配置属性 setDataSource   数据是从数据库来的,与数据库建立连接-->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 扫描实体类的配置 entity-->
        <property name="packagesToScan" value="cn.lxz.domain"></property>
        <!--
         配置一个JPA的适配器:hibernate  Adapter:适配器
         jpaVendorAdapter:JPA是用哪一个框架来实现的
         配置JPA
      -->
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <!-- 是否显示sql-->
                <property name="showSql" value="true"></property>
                <!-- 是否创建表-->
                <property name="generateDdl" value="true"></property>
                <!--数据库方言-->
                <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"></property>
            </bean>
        </property>
    </bean>
    <!-- 准备JPA的事务管理器,事务管理器需要工厂对象的支持 -->
    <!--id名称固定 transactionManager-->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"></property>
    </bean>
    <!-- 开启事务 扫描@Transaction这种注解  spring支持的注解-->
    <tx:annotation-driven/>
</beans>

12.5主包内容编写

1.主包目录

结构不存在就自己编写出来

1.实体类

@Table(name = "user")
@Entity
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer Id;
    private String name;
    //省略get和set以及构造函数等方法
    ...
    }

2.数据访问层

@Repository
public class UserDao {
    @Autowired
    private EntityManagerFactory entityManagerFactory;
    public boolean  addUser(User user){
        try {
      EntityManager em= entityManagerFactory.createEntityManager();
        em.getTransaction().begin();
        em.persist(user);
        em.getTransaction().commit();
        em.close();
        }
        catch (Exception e){
            return false;
        }
        return true;
    }
}

3.服务类

@Service
public class UserService {
    @Autowired
    private UserDao userDao;
    public boolean  addUser(User user){
        System.out.println("addUser执行...");
        if (userDao.addUser(user)){
            return true;
        }
        else {
            return false;
        }
    }
    
}

4.控制器

@Controller
@RequestMapping(path = "/user")
public class UserController {

    @Autowired
    private UserService userService;
    @RequestMapping(path = "/add",method = RequestMethod.GET)
    @ResponseBody
    /**
     @RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容
     @RequestBody接收application/json数据类型
     multipart/form-data,例如(@RequestParam MultipartFile file)接收文件的
     前三种都是form表单,数据都携带在body中。啥都不写可以接收地址栏中的参数 ?name=张三
     */
    public JsonResult addUser(User user){
        JsonResult jsonResult=new JsonResult();
        jsonResult.setData(null);
        if (userService.addUser(user)){
            jsonResult.setCode(200);
            jsonResult.setMsg("add success");
        }else {
            jsonResult.setCode(5001);
            jsonResult.setMsg("add fail");
        }
        return jsonResult;
    }
    //返回的是jsp
    @RequestMapping(path = "/hello")
    public String hello(HttpServletRequest request ){
        request.setAttribute("name","张三");
        return "hello";
    }
}

12.6效果图

1.添加数据

2.返回视图

张三是传入进入的数据

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

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

相关文章

自学5个月Java找到了9K的工作,我的方式值得大家借鉴 第一部分

我是去年9月22日才正式学习Java的&#xff0c;因为在国营单位工作了4年&#xff0c;在天津一个月工资只有5000块&#xff0c;而且看不到任何晋升的希望&#xff0c;如果想要往上走&#xff0c;那背后就一定要有关系才行。而且国营单位的气氛是你干的多了&#xff0c;领导觉得你…

java基础之线程池

线程池1.线程池1.1 线程状态介绍1.2 线程池-基本原理1.3 线程池-Executors默认线程池1.4 线程池-Executors创建指定上限的线程池1.5 线程池-ThreadPoolExecutor1.6 线程池-参数详解1.7 线程池-非默认任务拒绝策略2. 原子性2.1 volatile-问题2.2 volatile解决2.3 synchronized解…

你真的懂动态库吗?一文详解动态库的方方面

这里写目录标题创建动态库创建静态库动态库与静态库的区别动态链接与静态链接的区别动态库的加载过程dll的创建以及应用程序隐式链接到dll的过程dll的创建以及应用程序显示链接到dll的过程动态库的二进制兼容性创建动态库 1.【新建】-》【项目】-》【动态链接库】 新建的动态…

Elasticsearch入门之Http操作(高级查询)

Elasticsearch 基本操作 Http操作&#xff1a; 高级查询&#xff1a; 高级查询&#xff1a;Elasticsearch 提供了基于 JSON 提供完整的查询 DSL 来定义查询 初始化数据&#xff1a; 查询所有文档&#xff1a; 在 Postman 中&#xff0c;向 ES 服务器发 GET 请求 &#xff1a…

docker的逃逸复现(CVE-2020-15257-host模式容器逃逸漏洞)

host模式下的docker逃逸的概述因为docker所使用的是隔离技术&#xff0c;就导致了容器内的进程无法看到外面的进程&#xff0c;但外面的进程可以看到里面&#xff0c;所以如果一个 Docker 容器内部可以操作该容器的外部资源&#xff0c;一般理解为操作宿主机的行为。叫做docker…

【组织架构】中国铁路太原局集团有限公司

1 公司简介 中国铁路太原局集团有限公司&#xff0c;是中国国家铁路集团有限公司管理的18个铁路局集团有限公司之一&#xff0c;简称“太局”。成立于2005年3月18日&#xff0c;共有职工11.5万人。 管辖南同蒲铁路、北同蒲铁路、大秦铁路、侯月铁路、石太铁路、侯西&#xff08…

Confluence 安装

Confluence 安装 一、购买一台服务器 推荐使用 Ubuntu 版本服务器。 二、安装宝塔面板 官方安装地址 安装地址 Centos 安装脚本 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec…

7个好用到爆的音频、配乐素材网站,BGM都在这里了

现在只要有一部手机&#xff0c;人人都能成为视频创作者。一个好的视频不能缺少的就是内容、配乐&#xff0c;越来越注重版权的当下&#xff0c;音效素材使用不当造成侵权的案例层出不穷。为了避免侵权&#xff0c;找素材让很多创作者很头疼。 今天我就整理了7个可以免费下载&…

一步打通多渠道服务场景 中电金信源启移动开发平台MADP功能“上新”

日前&#xff0c;中电金信源启移动开发平台MADP功能迭代升级&#xff0c;“上新”源启小程序开发平台。定位“为金融业定制”的移动PaaS平台&#xff0c;源启小程序开发平台为银行、互联网金融、保险、证券客户提供一站式小程序的开发、运营、营销全生命周期管理技术支撑&#…

经验 // 通用又好用的思维工具

有很多管理或思维小工具&#xff0c;非常通用&#xff0c;各行各业都用的到&#xff0c;工作用的到&#xff0c;生活也用的到。掌握这些工具&#xff0c;让你在工作上很专业&#xff0c;在生活上很认真。 1-【MECE原则】 MECE法则&#xff0c;是麦肯锡公司的巴巴拉明托&#…

06--WXS 脚本

1、简介WXS&#xff08;WeiXin Script&#xff09;是小程序的一套脚本语言&#xff0c;结合 WXML &#xff0c;可以构建出页面的结构。 注意事项WXS 不依赖于运行时的基础库版本&#xff0c;可以在所有版本的小程序中运行。WXS 与 JavaScript 是不同的语言&#xff0c;有自己的…

Spring与Dubbo整合原理与源码分析

EnableDubbo注解中有两个注解 EnableDubboConfig是用来解析配置文件的 DubboComponentScan是用来扫描Service和Refrence的 1.Dubbo中propertie⽂件解析以及处理原理 我们看到引入了DubboConfigConfigurationRegistrar&#xff0c;一看就知道干嘛了&#xff0c;老套路 我们看下…

【UE4 】制作螺旋桨飞机

一、素材资源链接&#xff1a;https://pan.baidu.com/s/1xPVYYw05WQ6FABq_ZxFifg提取码&#xff1a;ivv8二、课程视频链接https://www.bilibili.com/video/BV1Bb411h7qw/?spm_id_from333.337.search-card.all.click&vd_source36a3e35639c44bb339f59760641390a8三、最终效果…

CVE-2022-42889 Apache Commons Text 漏洞

0x00 前言 所幸遇到&#xff0c;就简单看看&#xff0c;其中没有啥比较难的地方&#xff0c;仅做记录。10月13日的漏洞。 cve链接可以看下面这个&#xff1a; https://cve.mitre.org/cgi-bin/cvename.cgi?nameCVE-2022-42889 git地址&#xff1a; https://github.com/apache…

AcWing蓝桥杯辅导课:第二讲 二分与前缀和

AcWing 789. 数的范围 思路&#xff1a; 二分模板一共有两个&#xff0c;分别适用于不同情况。 算法思路&#xff1a;假设目标值在闭区间[l, r]中&#xff0c; 每次将区间长度缩小一半&#xff0c;当l r时&#xff0c;我们就找到了目标值。 版本1 当我们将区间[l, r]划分成[…

基于蚂蚁优化算法的柔性车间调度研究(Python代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

21_FreeRTOS内存管理

目录 FreeRTOS内存管理 FreeRTOS内存管理算法 内存管理相关API函数介绍 实验源码 FreeRTOS内存管理 在使用FreeRTOS创建任务、队列、信号量等对象的时,一般都提供了两种方法: 动态方法创建 自动地从 FreeRTOS 管理的内存堆中申请创建对象所需的内存&#xff0c;并且在对…

AcWing算法提高课-3.1.1热浪

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 题目传送门点这里 题目描述 德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪&#xff01;&#xff01;&#xff01; 他们的德克萨斯长角牛吃起来不错&#xff0c;可是它们并不是很擅长生产富…

【博学谷学习记录】超强总结,用心分享丨人工智能 特征工程 特征变换 分箱学习总结

目录概念分箱的作用等频分箱等距分箱*卡方分箱公式例子概念 特征构造的过程中&#xff0c;对特征做分箱处理时必不可少的过程分箱就是将连续变量离散化&#xff0c;合并成较少的状态 分箱的作用 离散特征的增加和减少都很容易&#xff0c;易于模型的快速迭代&#xff1b;稀疏…

IB选课避坑指南,选课不踩雷

众所周知&#xff0c;IBDP课程颇具挑战性&#xff0c;对于学习者的英语写作、意志力、自律性要求都比较严格。 如果你高中阶段想学习IBDP课程&#xff0c;那么在学习之前一定要搞清楚怎么选课再做决定&#xff01;年轻的IB人&#xff0c;你们准备好了吗&#xff1f; 很多同学在…