Spring的注解开发-注解方式整合MyBatis代码实现

  • 之前使用xml方式整合了MyBatis,文章导航:Spring整合第三方框架-MyBatis整合Spring实现-CSDN博客
    现在使用注解的方式无非是就是将xml标签替换为注解,将xml配置文件替换为配置类而已。
    • 非自定义配置类
    • package com.example.Configure;import com.alibaba.druid.pool.DruidDataSource;
      import com.example.Beans.otherBeans;
      import org.mybatis.spring.SqlSessionFactoryBean;
      import org.mybatis.spring.annotation.MapperScan;
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.context.annotation.*;import javax.sql.DataSource;@Configuration // todo 标注当前类是一个配置类(替代配置文件)、其中包含@Compoent注解
      // <context:component-scan base-package="com.example"/>
      @ComponentScan({"com.example"})// <context:property-placeholder location="jdbc.properties"/>
      @PropertySource("jdbc.properties")// <import resource=""/>
      @Import(otherBeans.class)// Mapper接口扫描
      @MapperScan("com.example.Mapper")
      public class SpringConfig {@Bean  // 将非自定义的bean对象交给Spring容器管理public DataSource dataSource(@Value("${jdbc.driver}") String driver,@Value("${jdbc.url}") String url,@Value("${jdbc.username}") String username,@Value("${jdbc.password}") String password) {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;}@Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);return sqlSessionFactoryBean;}}
      

                与数据库建立连接的同时,扫描指定的mapper接口,实现实现数据库的操作

  • mapper接口类以及其对应的xml配置文件
    • package com.example.Mapper;import com.example.pojo.Emp;
      import org.springframework.stereotype.Repository;import java.util.List;@Repository
      public interface EmpMapper {List<Emp> findAll();
      }
      
    • <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.example.Mapper.EmpMapper"><select id="findAll" resultType="com.example.pojo.Emp">select *from tb_emp;</select>
      </mapper>
    • 业务层调用持久层

    • package com.example.Service.Impl;import com.example.Mapper.EmpMapper;
      import com.example.Service.UserService;
      import com.example.pojo.Emp;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;import java.util.List;@Service("userService")
      public class UserServiceImpl implements UserService {@Autowiredprivate EmpMapper empMapper;@Overridepublic void show() {List<Emp> empList = empMapper.findAll();for (Emp emp : empList) {System.out.println(emp);}}}
      

      上述中直接注入的mapper接口类

    • 测试代码

    • package com.example.Test;import com.example.Configure.SpringConfig;
      import com.example.Service.UserService;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class TestApplicationContext {public static void main(String[] args) {// 注解方式加载Spring容器的核心配置类ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);UserService bean = context.getBean(UserService.class);bean.show();}
      }
    • 运行结果如下:


    •  

  • 小结

  • 用注解的方式整合第三方框架,以MyBatis框架为例,首先得与数据库建立连接的操作由配置文件转换为配置类,使用@Bean注解,Spring框架会自动调用这两个方法,并生成对应的bean对象交给Spring容器管理,与数据库成功建立连接。然后在业务层直接注入Mapper接口对象,调用其中的方法,实现对于数据库的操作。

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

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

相关文章

黑马头条项目环境搭建

注册中心网关配置 spring:cloud:gateway:globalcors:add-to-simple-url-handler-mapping: truecorsConfigurations:[/**]:allowedHeaders: "*"allowedOrigins: "*"allowedMethods:- GET- POST- DELETE- PUT- OPTIONroutes:# 平台管理- id: useruri: lb://…

【新员工座位安排系统】python实现-附ChatGPT解析

1.题目 新员工座位安排系统 知识点:数组、统计、哈希表、差分、滑窗 时间限制: 1s 空间限制: 256MB 限定语言: 不限 题目描述: 工位由序列F1,F2,..,Fn组成,Fi值为0、1或2。其中0代表空置,1代表有人,2代表障碍物。 某一空位的友好度为左右连续老员工数之和为方便新员工学习求…

c# 委托 事件 lambda表达式

委托 C/C中的函数指针实例&#xff1a; typedef int (*Calc)(int a, int b); //这里必须加括号 int Add(int a, int b) {return a b; } int Sub(int a, int b) {return a - b; } int main() {int x 100;int y 200;int z 0;Calc funcPoint1 &Add;Calc funcPoint2 &am…

Android学习之路(19) ListView详解

一.ListView简介 在Android开发中&#xff0c;ListView是一个比较常用的控件。它以列表的形式 展示具体数据内容&#xff0c;并且能够根据数据的长度自适应屏幕显示。 二.ListView简单用法 代码部分 1.布局界面 activity_main.xml 代码&#xff1a; <?xml version"…

新手学习笔记-----编译和链接

目录 1. 翻译环境和运⾏环境 2. 翻译环境&#xff1a;预编译编译汇编链接 2.1 预处理 2.2 编译 2.2.1 词法分析 2.2.2 语法分析 2.2.3 语义分析 2.3 汇编 2.4 链接 3. 运⾏环境 1. 翻译环境和运⾏环境 在ANSI C的任何⼀种实现中&#xff0c;存在两个不同的环境。 第…

持续集成部署-k8s-命令行工具:基础命令的使用

持续集成部署-k8s-命令行工具:基础命令的使用 1. 资源类型与别名2. 资源操作2.1 创建对象2.2 显示和查找资源2.3 更新资源2.4 修补资源2.5 编辑资源2.6 scale 资源2.7 删除资源3. 格式化输出1. 资源类型与别名 资源类型缩写别名clusterscomponentstatusescsconfigmapscmdaemon…

LSTM+CRF模型

今天讲讲LSTM和CRF模型&#xff0c;LSTM&#xff08;长短期记忆&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;模型&#xff0c;用于处理序列数据、时间序列数据和文本数据等。LSTM通过引入门控机制&#xff0c;解决了传统RNN模型在处理长期依赖关系时的困难…

win10 关闭病毒防护

windows10彻底关闭Windows Defender的4种方法 - 知乎

华为鸿蒙手表开发之动态生成二维码

华为鸿蒙手表开发之动态生成二维码 前言&#xff1a; 最近入职新公司&#xff0c;由于之前的哥们临时离职&#xff0c;走得很突然&#xff0c;所以没有任何交接和文档&#xff0c;临时顶上公司手表应用的上架&#xff0c;更换了新的密钥和key之后重新测试功能和流程&#xff…

from PIL import Image,文字成图,ImageFont import jieba分词,input优雅python绘制图片

开始的代码 import os from PIL import Image, ImageDraw, ImageFont import jiebadef generate_image_with_white_bg(text, font_path, output_path):# 设置图片大小和背景颜色image_width 800image_height 600bg_color (255, 255, 255) # 白色# 创建图片对象image Imag…

正点原子嵌入式linux驱动开发——TF-A初探

上一篇笔记中&#xff0c;正点原子的文档简单讲解了一下什么是TF-A&#xff0c;并且也学习了如何编译TF-A。但是TF-A是如何运行的&#xff0c;它的一个运行流程并未涉及。TF-A的详细运行过程是很复杂的&#xff0c;涉及到很多ARM处理器底层知识&#xff0c;所以这一篇笔记的内容…

竞赛选题 机器视觉人体跌倒检测系统 - opencv python

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 机器视觉人体跌倒检测系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&…

654.最大二叉树

力扣题目地址(opens new window) 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给…

如何在 Windows 上安装 ONLYOFFICE 协作空间社区版

ONLYOFFICE 协作空间是一个在线协作平台&#xff0c;帮助您更好地与客户、业务合作伙伴、承包商及第三方进行文档协作。今天我们来介绍一下&#xff0c;如何在 Windows 上安装协作空间的自托管版。 ONLYOFFICE 协作空间主要功能 使用 ONLYOFFICE 协作空间&#xff0c;您可以&a…

MySQL和Oracle中,语法的不同点以及如何在xml中书写日期比较大小

众所周知mysql和oracle的语法有点相识&#xff0c;又有点不同。 在MySQL和Oracle中&#xff0c;语法的不同点有以下几个方面&#xff1a; 数据类型&#xff1a;MySQL和Oracle支持的数据类型有所不同&#xff0c;比如MySQL支持的数据类型包括&#xff1a;整型、浮点型、字符型、…

PowerPoint如何设置密码?

PowerPoint&#xff0c;也就是PPT&#xff0c;是很多人工作中经常用的办公软件&#xff0c;而PPT和Word、Excel等一样可以设置密码保护。 PPT可以设置两种密码&#xff0c;一种是“打开密码”&#xff0c;也就是需要密码才能打开PPT&#xff1b;还有一种是设置成有密码的“只读…

怎样提高服务器安全性?45.248.11.x

服务器被攻击一般有两种比较常见的方式&#xff1a;一是恶意的攻击行为&#xff0c;如拒绝服务攻击&#xff0c;网络病毒等等&#xff0c;这种方式就是消耗服务器资源&#xff0c;影响服务器的正常运作&#xff0c;甚至服务器所在网络的瘫痪;另外一个就是恶意的入侵行为&#x…

vue ant 隐藏列

vue ant 隐藏列 重要代码 type: FormTypes.hidden{ title: 序号, key: barCode, width: 10%, type: FormTypes.hidden},

ARM-day2

1、1到100累加 .text .global _start_start:MOV r0, #1ADD r1,r0, #1fun:ADD r0,r0,r1ADD r1,r1, #1cmp r1, #0x65moveq PC,LRbl funstop:b stop.end2、思维导图

105.从前序与中序遍历序列构造二叉树

力扣题目链接(opens new window) 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a; class Solution { public:Tr…