【Sring】Spring整合Mybtis流程

步骤 1: 添加依赖

<!-- Spring核心依赖 -->  
<dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-context</artifactId>  <version>你的Spring版本</version>  
</dependency>  <!-- MyBatis依赖 -->  
<dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis</artifactId>  <version>你的MyBatis版本</version>  
</dependency>  <!-- MyBatis-Spring整合依赖 -->  
<dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis-spring</artifactId>  <version>你的mybatis-spring版本</version>  
</dependency>  <!-- 数据库连接依赖,例如MySQL -->  
<dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>  <version>你的MySQL Connector版本</version>  
</dependency>

步骤 2: 配置数据源和MyBatis

在Spring配置文件中(例如applicationContext.xml),配置数据源、SqlSessionFactory和Mapper扫描。

<beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:tx="http://www.springframework.org/schema/tx"  xsi:schemaLocation="...">  <!-- 配置数据源 -->  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  <property name="url" value="jdbc:mysql://localhost:3306/your_database"/>  <property name="username" value="your_username"/>  <property name="password" value="your_password"/>  </bean>  <!-- 配置SqlSessionFactory -->  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  <property name="dataSource" ref="dataSource"/>  <!-- 配置mapper文件的位置 -->  <property name="mapperLocations" value="classpath*:mapper/*.xml"/>  </bean>  <!-- 配置Mapper扫描 -->  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  <property name="basePackage" value="com.example.demo.mapper"/>  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>  </bean>  <!-- 配置事务管理器 -->  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  <property name="dataSource" ref="dataSource"/>  </bean>  <!-- 开启事务注解 -->  <tx:annotation-driven transaction-manager="transactionManager"/>  
</beans>

步骤 3: 创建实体类

package com.example.demo.entity;  import java.io.Serializable;  public class User implements Serializable {  private static final long serialVersionUID = 1L;  private Integer id;  private String name;  private String email;  // 省略getter和setter方法  // 必须提供getter和setter方法,这里为了简洁省略了  public Integer getId() {  return id;  }  public void setId(Integer id) {  this.id = id;  }  public String getName() {  return name;  }  public void setName(String name) {  this.name = name;  }  public String getEmail() {  return email;  }  public void setEmail(String email) {  this.email = email;  }  // 可以添加toString方法方便调试  @Override  public String toString() {  return "User [id=" + id + ", name=" + name + ", email=" + email + "]";  }  
}

步骤 4: 创建Mapper接口和Mapper XML

创建一个Mapper接口,并在对应的XML文件中定义SQL语句。

UserMapper.java

package com.example.demo.mapper;  import com.example.demo.entity.User;  
import org.apache.ibatis.annotations.Mapper;  import java.util.List;  @Mapper // 使用@Mapper注解告诉Spring这是一个MyBatis的Mapper接口  
public interface UserMapper {  User selectById(Integer id);  List<User> selectAll();  int insert(User user);  int update(User user);  int deleteById(Integer id);  
}

UserMapper.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">  <!-- 根据ID查询用户 -->  <select id="selectById" resultType="com.example.demo.entity.User">  SELECT * FROM user WHERE id = #{id}  </select>  <!-- 查询所有用户 -->  <select id="selectAll" resultType="com.example.demo.entity.User">  SELECT * FROM user  </select>  <!-- 插入用户 -->  <insert id="insert" parameterType="com.example.demo.entity.User">  INSERT INTO user (name, email) VALUES (#{name}, #{email})  </insert>  <!-- 更新用户 -->  <update id="update" parameterType="com.example.demo.entity.User">  UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}  </update>  <!-- 根据ID删除用户 -->  <delete id="deleteById" parameterType="java.lang.Integer">  DELETE FROM user WHERE id = #{id}  </delete>  </mapper>

步骤 5: 在服务层使用Mapper

在服务类中注入Mapper,并调用其方法来执行CRUD操作。

UserService.java

package com.example.demo.service;  import com.example.demo.entity.User;  
import com.example.demo.mapper.UserMapper;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Service;  @Service  
public class UserService {  @Autowired  private UserMapper userMapper;  public User getUserById(Integer id) {  return userMapper.selectById(id);  }  public void addUser(User user) {  userMapper.insert(user);  }  public void updateUser(User user) {  userMapper.update(user);  }  public void deleteUser(Integer id) {  userMapper.deleteById(id);  }  // 可以添加其他业务逻辑方法  
}

步骤 6: 编写测试类

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

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

相关文章

15:00面试,15:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

angular插值语法与属性绑定

在 Angular 中&#xff0c;您提供的两种写法都是用来设置 HTML 元素的 title 属性&#xff0c;但它们的工作方式有所不同&#xff1a; 插值语法 (Interpolation) <h1 title"{{ name }}">我的名字</h1> 属性绑定 (Property Binding) <h1 [title]&q…

MySQL数据库下的Explain命令深度解析

Explain是一个非常有的命令&#xff0c;可以用来获取关于查询执行计划的信息&#xff0c;以及如何解释输出。Explain命令是查看查询优化器如何决定执行查询的主要方法。这个功能有一定的局限性&#xff0c;并不总是会说出真相&#xff0c;但是它的输出是可以获取的最好信息&…

Kubernetes集群上的Etcd备份和恢复

在本教程中&#xff0c;您将学习如何在Kubernetes集群上使用etcd快照进行etcd备份和恢复。 在Kubernetes架构中&#xff0c;etcd是集群的重要组成部分。所有集群对象及其状态都存储在etcd中。为了更好地理解Kubernetes&#xff0c;有几点关于etcd的信息是您需要了解的。 它是…

【探索数据结构】线性表之双链表

&#x1f389;&#x1f389;&#x1f389;欢迎莅临我的博客空间&#xff0c;我是池央&#xff0c;一个对C和数据结构怀有无限热忱的探索者。&#x1f64c; &#x1f338;&#x1f338;&#x1f338;这里是我分享C/C编程、数据结构应用的乐园✨ &#x1f388;&#x1f388;&…

【超全干货】一文讲清什么是全民分销?怎么做好全民分销?

一、什么是全民分销&#xff1f; 全民分销&#xff0c;作为新时代营销模式的代表之一&#xff0c;是基于互联网尤其是社交媒体平台兴起的一种分销策略。它打破了传统零售与电子商务的界限&#xff0c;允许任何个人&#xff0c;无论是否为专业销售人员&#xff0c;都能成为品牌…

HTML5 新增标签的基本使用以及DOM操作

HTML5 常见标签的基本使用以及DOM操作 目录 HTML5的介绍 Web技术发展时间线什么是HTML5HTML5的应用场景HTML5新增的内容景 HTML5新增内容详解 语义化的标签H5中新增的语义标签H5中的表单多媒体应用 HTML5进行DOM操作 DOM操作 HTML5的介绍 Web技术发展时间线 1991 HTML 199…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第27课-门的打开

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第27课-门的打开 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&am…

FreeRTOS_互斥量_学习笔记

互斥量 数值只有0或1 谁获得互斥量&#xff0c;就必须由谁释放同一个互斥量。 但其实在freeRTOS中&#xff0c;任务A获取的互斥锁&#xff0c;任务B也能释放。因此谁上锁谁开锁只是约定&#xff0c;在程序实现上不是强制的。 “可重入的函数"是指&#xff1a;多个任务同时…

Qt输入输出类使用总结

Qt输入输出类简介 QTextStream 类(文本流)和 QDataStream 类(数据流)Qt 输入输出的两个核心类,其作用分别如下: QTextStream 类:用于对数据进行文本格式的读/写操作,可在 QString、QIODevice或 QByteArray 上运行,比如把数据输出到 QString、QIODevice 或 QByteArray 对象…

Linux-文件或目录权限

在使用 ll 时&#xff0c;可以查看文件夹内容的详细信息&#xff0c;信息的第1位表示类型&#xff0c;具体信息如下&#xff1a; 类型说明-普通文件d文件夹b块设备文件c字符设备文件p管道文件s套接口文件 第2-10位表示权限&#xff0c; 举例&#xff1a;rwxr-xr-x 类型说明r…

业务架构核心要素之间的关系

背景 前面已经对业务架构的概念和发展简史有了初步的了解&#xff0c;现在主流的业务架构就是价值流能力&#xff0c;在这套架构体系中&#xff0c;有四个核心元素&#xff0c;分别是价值流、业务能力、信息、组织。 这四个核心元素&#xff0c;特别是对于价值流以及业务能力…

flume source 简介及官方用例

1、NetCat TCP Source 一个类似 netcat 的源&#xff0c;它侦听给定的端口并将每行文本转换为一个事件。类似于 nc -k -l [主机] [端口]。换句话说&#xff0c;它打开一个指定的端口并侦听数据。期望提供的数据是换行符分隔的文本。每行文本都会变成一个 Flume 事件&#xff0…

小白如何从零开始学新媒体运营二

新媒体运营需要什么技能呢&#xff1f; 硬技能 1&#xff09;文案撰写能力&#xff1a;文案能力几乎是所有运营从业者的标配&#xff0c;但写文案不等于写文章&#xff0c;作文满分的人不一定能写好文案&#xff0c;没什么学历的人也可能写出10W热评的文案 关键点在于通俗易…

Storm流式框架详细介绍(含代码例子)

学习目标&#xff1a; Storm流式框架详细介绍 学习内容&#xff1a; Apache Storm是一种分布式实时计算系统&#xff0c;旨在处理大规模数据流。它可以用来进行实时分析、在线机器学习、持续计算、分布式RPC、ETL等操作。以下是对Storm框架的详细介绍&#xff1a; 1. 核心概念…

探索Linux中的利器:深入了解grep命令

探索Linux中的利器&#xff1a;深入了解grep命令 在Linux系统中&#xff0c;grep命令是一个强大的文本搜索工具&#xff0c;用于在文件中查找特定模式的文本行。本文将详细介绍grep命令的基本用法和一些常见选项&#xff0c;帮助读者更好地理解和运用这个命令。 了解grep命令…

查看主机的php参数short_open_tag 是否为 on

我想要查看主机的php参数short_open_tag 是否为 on&#xff0c;由于我使用的是Hostease的Linux虚拟主机产品&#xff0c;在cPanel面板中并没有找到这个参数选项&#xff0c;因此无法查看。这边联系了Hostease技术支持了解&#xff0c;可以通过以下方式进行查看。 1.先登陆cPane…

Shell编程之条件判断语句

目录 一、条件判断 1、test命令 2、文件测试 3、整数值比较 4、字符串判断 5、逻辑测试 二、if语句 1、if单分支语句 2、双分支语句 3、多分之语句 4、case 分支语句 一、条件判断 Shell环境根据命令执行后的返回状态值&#xff08;echo $?&#xff09;来判断是否执行成…

鸿蒙HarmonyOS开发中的易混点归纳-持续补充中

相关文章目录 鸿蒙HarmonyOS开发术语全解&#xff1a;小白也能看懂&#xff01; 文章目录 相关文章目录前言一、build()函数和Builder装饰器&#xff1f;二、自定义组件和系统组件&#xff08;内置组件&#xff09;三、组件和页面四、自定义弹窗和其他弹窗总结 前言 一、build…

SpringBoot(五)之新增注解

SpringBoot&#xff08;五&#xff09;之新增注解 文章目录 SpringBoot&#xff08;五&#xff09;之新增注解核心注解EnableAutoConfiguration**SpringBootApplication** 条件注解Spring原生Conditional注解手写Conditional注解**ConditionalOnProperty****ConditionalOnMissi…