Spring:用 Spring 整合 MyBatis(Spring-MyBatis)代码整理

news2024/12/30 3:45:41

文章目录

  • Spring:Day 05
  • Spring - MyBatis
    • 1. 依赖:pom.xml
    • 2. 外部配置文件:db.properties
    • 3. MyBatis 核心配置文件:mybatis-config.xml
    • 4. 实体类
    • 5. 接口:xxxMapper.java
    • 6. 实现类:xxxMapper.xml
    • 7. Spring 通用配置文件:spring-dao.xml
    • 8. 实现类:xxxMapperImpl.java
    • 9. Spring 配置文件:applicationContext.xml
    • 10. 测试

Spring:Day 05

Spring - MyBatis

  • MyBatis 使用的代码整理:点此进入
  • Spring 整合 MyBatis 的具体过程:点此进入

用 Spring 整合 MyBatis 代码整理

1. 依赖:pom.xml

<!-- mysql 数据库驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
</dependency>

<!-- spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.18</version>
</dependency>

<!-- aspectjweaver -->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.6</version>
</dependency>

<!-- spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.23</version>
</dependency>

<!-- mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.6</version>
</dependency>

<!-- junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

<!-- lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
</dependency>

2. 外部配置文件:db.properties

jdbc.drive=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring01?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=1142553864qq

注意一定要是 jdbc.xxx

3. MyBatis 核心配置文件:mybatis-config.xml

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- configuration 核心配置文件 -->
<configuration>

    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="cacheEnabled" value="true"/>
    </settings>

    <typeAliases>
        <typeAlias type="com.Sun3285.pojo.xxx" alias="xxx"/>
        <!--<package name="com.Sun3285.xxx"/>-->
    </typeAliases>

</configuration>

注意:在 MyBatis 核心配置文件中进行设置以及别名管理,其余设置在 Spring 配置文件中配置。

4. 实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class 实体类 implements Serializable {
    private int xxx;
    private String xxx;
}

注意:实体类需要实现序列化

5. 接口:xxxMapper.java

public interface xxxMapper {
    
    // 方法
    返回值类型 方法名(@Param("xxx") int xxx);
}

6. 实现类:xxxMapper.xml

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.Sun3285.dao.xxxMapper">

    <cache/>

    <select id="方法名" parameterType="参数类型" resultType="返回值类型">
        sql 语句
    </select>

</mapper>

注意:实现类在 namespace 中需要绑定实现的接口

7. Spring 通用配置文件:spring-dao.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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        https://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 外部配置文件 -->
    <context:property-placeholder ignore-unresolvable="true" location="classpath:db.properties"/>

    <!-- 注册 dataSource -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.drive}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!-- 注册 sqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 绑定 MyBatis -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath*:com/Sun3285/dao/*.xml"/>
    </bean>

    <!-- 注册 sqlSessionTemplate -->
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <!-- 只能用构造器注入,因为类没有 set 方法 -->
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>

    <!-- 配置声明式事务 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 结合 AOP 实现事务的织入 -->
    <!-- 配置事务通知(切面) -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- 给哪些方法配置事务、事务的传播特性(默认 REQUIRED) -->
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <!-- 配置事务切入 -->
    <aop:config>
        <aop:pointcut id="pointcut" expression="execution(* com.Sun3285.dao.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
    </aop:config>

</beans>

注意:需要按照实际情况对文件路径进行修改

8. 实现类:xxxMapperImpl.java

public class xxxMapperImpl implements xxxMapper{

    private SqlSessionTemplate sqlSession;

    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }

    // 方法
    public 返回值类型 方法名() {
        xxxMapper mapper = sqlSession.getMapper(xxxMapper.class);
        return mapper.方法名();
    }
}

注意:这个实现类相当于之前 MyBatis 中的测试代码,用来得到 mapper,最终还是由 mapper 来执行第 6 步中实现类中的方法。

9. 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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 导入 Spring 通用配置文件 -->
    <import resource="spring-dao.xml"/>

    <!-- 注册第 8 步的实现类 -->
    <bean id="对象名" class="com.Sun3285.dao.xxxMapperImpl">
        <property name="sqlSession" ref="sqlSessionTemplate"/>
    </bean>

</beans>

10. 测试

public class Test01 {
    @Test
    public void test01() {

        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        // 从容器中得到对象,执行方法
        context.getBean("对象名").方法();
    }

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

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

相关文章

ATA-4014高压功率放大器驱动超声马达测试应用

ATA-4014 高压功率放大器简介 ATA-4014是一款理想的可放大交、直流信号的单通道高压功率放大器。最大输出160Vp-p&#xff08;80Vp&#xff09;电压&#xff0c;452Wp功率&#xff0c;可以驱动高压功率型负载。电压增益数控可调&#xff0c;一键保存常用设置&#xff0c;为您提…

利用 PRIMO 重构 M87 黑洞图像,普林斯顿高等研究院成功将「甜甜圈」变身「金戒指」

内容一览&#xff1a;2019 年&#xff0c;「事件视界望远镜 (Event Horizon Telescope&#xff0c;简称 EHT)」全球研究团队发布了人类历史上第一张黑洞照片&#xff0c;受限于当时的观测条件&#xff0c;这张黑洞图像只呈现出一个模糊不清的轮廓。近日&#xff0c;天体物理学期…

打家劫舍 III——力扣337

文章目录 题目描述法一&#xff1a;动态规划 题目描述 法一&#xff1a;动态规划 问题简化&#xff1a;一棵二叉树&#xff0c;树上的每个点都有对应的权值&#xff0c;每个点有两种状态&#xff08;选中和不选中&#xff09;&#xff0c;问在不能同时选中有父子关系的点的情况…

Kafka题集 - kafka术语面试题总结

文章目录 01. 什么是 Kafka&#xff1f;02. 为什么要用kafka&#xff1f;03. Kafka 消息引擎模型04. kafka 消费方式&#xff1f;05. Kafka 传输消息的编码格式&#xff1f;06. kafka 体系架构&#xff1f;07. kafka 消息和批次&#xff1f;08. kafka 主题和分区&#xff1f;09…

Weex中,关于组件的水平排列竖直排列居中对齐居左对齐居右对齐低部对齐顶部对齐布局对齐说明

容器内子组件排列方向 子组件竖直方向排列&#xff08;默认&#xff09; 子组件水平方向排列 <style> .container {flex-direction: row;direction: ltr; } </style>子组件在父组件容器中的对齐方式 我们主要使用两个属性实现子组件在父组件的对齐方式&#xff…

Qt之程序发布以及打包成exe安装包目录

Qt之程序发布以及打包成exe安装包 目录 一、简述二、设置应用程序图标三、发布程序四、打包程序 回到顶部 一、简述 Qt 项目开发完成之后&#xff0c;需要打包发布程序&#xff0c;而因为用户电脑上没有 Qt 配置环境&#xff0c;所以需要将 release 生成的 exe 文件和所依赖…

hiveSql调优

一、hiveSQL执行顺序 from … where … mapjoin … on … select&#xff08;筛选有用字段&#xff09; … group by ||… join … on … select&#xff08;筛选输出字段&#xff09; … having … distinct … order by … limit … union/union all|| 前是map阶段执行&…

五月最近一次面试,被阿里P8测开虐惨了...

都说金三银四涨薪季&#xff0c;我是着急忙慌的准备简历——5年软件测试经验&#xff0c;可独立测试大型产品项目&#xff0c;熟悉项目测试流程...薪资要求&#xff1f;5年测试经验起码能要个20K吧 我加班肝了一页半简历&#xff0c;投出去一周&#xff0c;面试电话倒是不少&a…

自动化测试框架类型,你知道几种?此处介绍5种比较常见的

每一个测试人员都应该了解每种框架的优缺点&#xff0c;以帮助你的团队更好地确定最适合的测试的框架&#xff0c;以达到事半功倍。 什么是测试自动化框架? 自动化测试框架就是用于测试自动化的框架。具体来说&#xff0c;它提供了自动化测试用例编写、自动化测试用例执行、自…

分布式ID的选择

一、分布式ID策略 1.目前数据库主键ID生成的策略整理了这么几个&#xff0c;我们分析下每个的问题 1.1 数据库自增ID分析 我们创建数据库的时候&#xff0c;指定我们的id字段是主键&#xff0c;并且是自增的 create table demo_table ( id int(10) primary key auto_increm…

【个人笔记】真寻bot部署记录+源码食用记录

安装 0. 系统配置 Centos v8.2 1. 安装 使用真寻bot https://github.com/zhenxun-org/zhenxun_bot-deploy bash <(curl -s -L https://raw.githubusercontent.com/zhenxun-org/zhenxun_bot-deploy/master/install.sh)选择1&#xff0c;安装go-cqhttp和zhenxun_bot&…

SQL Developer如何导入时间格式的字段?

SQL developer有一个非常好用的功能&#xff0c;就是导入本地的数据文件。但是导入文件时&#xff0c;如果含时间字段&#xff0c;常常无法导入成功&#xff0c;如何解决&#xff1f; 第一步&#xff1a;处理表格时间格式 选中时间列&#xff0c;右击弹出【设置单元格格式】—…

指令微调数据集整理

文章目录 开源指令数据集斯坦福数据链家数据 垂直领域数据集医疗领域的英文数据医疗领域的中文数据 COIG数据集&#xff08;可商用的中文数据集&#xff09; 开源指令数据集 斯坦福数据 斯坦福52K英文指令数据&#xff1a;https://github.com/tatsu-lab/stanford_alpaca 52K …

硬件工程师-电路设计2-RC电路

RC滤波 滤波 把干扰的杂波滤除掉。 问题&#xff1a;为什么R和C可以实现滤波&#xff1f; 源 回路 阻抗 理想中的信号源是没有干扰的 实际中是有干扰的 受磁场 电场 地的影响&#xff0c;信号源会耦合一些高频干扰波进来&#xff0c;驼在信号源上。 ---…

链接思想的力量:如何将你的思维联系起来以提高你的学习和记忆能力

是否发现自己收藏的笔记很少做回顾和复盘&#xff1f; 链接你的思维&#xff08;LYT&#xff09;是另一个笔记系统&#xff0c;LYT笔记系统理念进入个人知识管理&#xff08;PKM&#xff09;会提供更有效和令人满意的笔记体验。 在今天的文章中&#xff0c;您将了解什么是链接…

踩坑记录:python + appium +adb 运行出现问题

搭建使用appium运行的环境&#xff0c;准备做个自己的app自动化&#xff0c;环境均已搭建好&#xff0c; appium-doctor 均正常使用 使用python下载Appium-Python-Client &#xff0c;pip 默认安装是最新版本&#xff0c;然后编写demo测试 from appium import webdriver i…

赛灵思-Zynq UltraScale+ MPSoC:QT与OPENCV交叉编译环境搭建

赛灵思-Zynq UltraScale MPSoC&#xff1a;QT与OPENCV交叉编译环境搭建 1、MPSOC 交叉编译环境简介 使用Linux交叉编译工具在开发中可以摆脱对petalinux的依赖&#xff0c;直接使用Linux交叉编译工具进行编译&#xff0c;可以使开发更加便捷。 由于获取Linux编译工具链需要用…

如何在华为OD机试中获得满分?Java实现【跳跃游戏 II】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

MyBatis中discriminator鉴别器如何使用?你若不会,我手把手教你 | 超级详细,建议收藏

1. 前言 不知道大家在平时有没有手写sql的习惯&#xff0c;当还没有开源mybatis-plus时&#xff0c;手写sql那是非常的常见&#xff0c;但是在维护一个老项目的时候&#xff0c;竟然勾起了我的一丝回忆。涉及到一个需求&#xff0c;我要追溯到它sql语句上&#xff0c;发现了一个…

【PC迁移与管理】上海道宁为每个用户和每个 PC 传输和迁移场景提供解决方案——PCmover

PCmover 是一款 可以自动将所有选定文件、 文件夹、设置、用户配置文件 甚至应用程序 从旧PC传输、恢复和升级到 新PC或操作系统的软件 而且由于 大多数迁移的应用程序 都已安装在新PC上即可使用 通常无需查找旧CD 以前下载的程序 序列号或许可证代码 开发商介绍 La…