iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >spring mybatis获取mapper的方式有哪些
  • 740
分享到

spring mybatis获取mapper的方式有哪些

2023-07-05 09:07:47 740人浏览 安东尼
摘要

本篇内容介绍了“spring mybatis获取mapper的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!spring-myba

本篇内容介绍了“spring mybatis获取mapper的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    spring-mybatis获取mapper方式汇总

    项目背景:

    pojo下面有一个user实体类

    Dao包下面写了usermapper.xml 和usermapper.interface,其中只有一个方法查询数据库中所有的用户。

    1.用实现类获取这个用户

    <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/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>        <property name="username" value="root"/>        <property name="passWord" value="root"/>    </bean>    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="configLocation" value="classpath:mybatis-config.xml"/>    </bean>    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">        <constructor-arg index="0" ref="sqlSessionFactory"/>    </bean><!--注册实现类usermapperimpl-->    <bean id="userMapper" class="com.kuang.mapper.UserMapperImpl">        <property name="sqlSession" ref="sqlSession"/>    </bean>

    实现类usermapperImpl:

    public class UserMapperImpl implements UserMapper {    private SqlSessionTemplate sqlSession;    public List<User> selectAllUser() {        return sqlSession.getMapper(UserMapper.class).selectAllUser();    }    public void setSqlSession(SqlSessionTemplate sqlSession) {        this.sqlSession = sqlSession;    }}

    test测试

    @Test    public void test2(){        ApplicationContext app = new ClassPathXmlApplicationContext("spring-dao.xml");        UserMapperImpl userMapper = app.getBean(UserMapperImpl.class);        List<User> users = userMapper.selectAllUser();        for (User user : users) {            System.out.println(user);        }    }

    2.SqlSessionDaoSupport获取

    public class UserMapperImpl1 extends SqlSessionDaoSupport implements UserMapper {    public List<User> selectAllUser() {        return getSqlSession().getMapper(UserMapper.class).selectAllUser();    }}

    bean的注册:

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="configLocation" value="classpath:mybatis-config.xml"/>    </bean><bean id="userimpl1" class="com.kuang.mapper.UserMapperImpl1">        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>    </bean>

    3.MapperFactoryBean

    <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/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>        <property name="username" value="root"/>        <property name="password" value="root"/>    </bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="configLocation" value="classpath:mybatis-config.xml"/>    </bean>    <bean id="userimpl" class="org.mybatis.spring.mapper.MapperFactoryBean">        <property name="mapperInterface" value="com.kuang.mapper.UserMapper"/>        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>    </bean>

    测试:

     @Test    public void test3(){        ApplicationContext app = new ClassPathXmlApplicationContext("spring-dao.xml");        UserMapper userMapper = app.getBean(UserMapper.class);         // UserMapper userMapper = app.getBean("userimpl");        List<User> users = userMapper.selectAllUser();        for (User user : users) {            System.out.println(user);        }    }

    在使用这个MapperFactoryBean方式的时候,通过app有两种方式获取bean,一种是id然后强转,另一种是接口的类型class。

    4.MapperScannerConfigurer

    xml配置

    <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/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>        <property name="username" value="root"/>        <property name="password" value="root"/>    </bean>    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="configLocation" value="classpath:mybatis-config.xml"/>    </bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="com.kuang.mapper"/>        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>    </bean>

    test:

    @Test    public void test4(){        ApplicationContext app = new ClassPathXmlApplicationContext("spring-dao.xml");        UserMapper bean = app.getBean(UserMapper.class);        for (User user : bean.selectAllUser()) {            System.out.println(user);        }    }

    mybatis的mapper注解

    从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件(那个xml写的是真的无语。。。)。很恶心的一个事实是源码中并没有对于这个注解的详细解释

    在 Spring 程序中,Mybatis 需要找到对应的 mapper,在编译的时候动态生成代理类,实现数据库查询功能,所以我们需要在接口上添加 @Mapper 注解。

    @Mapperpublic interface UserDao {    ...}

    但是,仅仅使用@Mapper注解,我们会发现,在其他变量中依赖注入,idea 会提示错误,但是不影响运行(亲测~)。

    因为我们没有显式标注这是一个 Bean,IDEA 认为运行的时候会找不到实例注入,所以提示我们错误。

    如下图,会有红色波浪线。

    spring mybatis获取mapper的方式有哪些

    尽管这个错误提示并不影响运行,但是看起来很不舒服,所以我们可以在对应的接口上添加 bean 的声明,如下:

    @Repository // 也可以使用@Component,效果都是一样的,只是为了声明为bean@Mapperpublic interface UserDao {@Insert("insert into user(account, password, user_name) " +            "values(#{user.account}, #{user.password}, #{user.name})")    int insertUser(@Param("user") User user) throws RuntimeException;}

    基于注解的开发也有其他手段帮助 Mybatis 找到 mapper,那就是 @MapperScan 注解,可以在启动类上添加该注解,自动扫描包路径下的所有接口。

    @SpringBootApplication@MapperScan("com.scut.thunderlearn.dao")public class UserEurekaClientApplication {    public static void main(String[] args) {        SpringApplication.run(UserEurekaClientApplication.class, args);    }}

    “spring mybatis获取mapper的方式有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    --结束END--

    本文标题: spring mybatis获取mapper的方式有哪些

    本文链接: https://www.lsjlt.com/news/351014.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • spring mybatis获取mapper的方式有哪些
      本篇内容介绍了“spring mybatis获取mapper的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!spring-myba...
      99+
      2023-07-05
    • spring-mybatis获取mapper的四种方式汇总
      目录spring-mybatis获取mapper方式汇总1.用实现类获取这个用户2.SqlSessionDaoSupport获取3.MapperFactoryBean4.Mapper...
      99+
      2023-03-07
      spring mybatis获取mapper mybatis获取mapper spring mybatis mapper
    • spring、mybatis配置方式有哪些
      这篇文章将为大家详细讲解有关spring、mybatis配置方式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、 动态代理实现 不用写dao的实现类这种方式比较简单,不用实现dao层,只需要定义接...
      99+
      2023-05-30
      spring mybatis
    • 获取cookie的方式有哪些
      今天小编给大家分享一下获取cookie的方式有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
      99+
      2024-04-02
    • 获取connectionString的方式有哪些
      获取connectionString的方式有以下几种:1. 从配置文件中获取:可以在应用程序的配置文件(如app.config或we...
      99+
      2023-08-14
      connectionString
    • mybatis集成到spring的方式有哪些
      本篇文章和大家了解一下mybatis集成到spring的方式有哪些。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1 前言1.1 集成spring前使用mybatis的方式mybatis单独使用时,一般的写法如下所示://...
      99+
      2023-07-06
    • Spring中获取Bean对象的注入方式有哪些
      本篇内容主要讲解“Spring中获取Bean对象的注入方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring中获取Bean对象的注入方式有哪些”吧!前言获取 bean 对象也叫做对...
      99+
      2023-07-05
    • Mapper编写方式有哪些
      这篇文章给大家分享的是有关Mapper编写方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Mapper 编写有哪几种方式?第一种:接口实现类继承 SqlSessionDa...
      99+
      2024-04-02
    • php获取URL的方式有哪些
      使用$_SERVER[‘REQUEST_URI’]获取当前页面的URL地址 使用$_SERVER[‘HTTP_HOST’]获取主机...
      99+
      2024-03-06
      php
    • jquery获取值的方式有哪些
      jQuery有多种方式可以获取值,以下是一些常用的方法:1. .val():用于获取表单元素的值,如输入框、下拉框和单选框等。例:$...
      99+
      2023-08-11
      jquery
    • javascript获取元素的方式有哪些
      javascript中获取元素的方式有:1.根据id获取元素;2.根据标签名获取元素;3.根据name属性的值获取元素;4.根据class样式获取元素 ;5.根据选择器获取元素 ;javascript中获取元素的方式有以下几种根据id获取元...
      99+
      2024-04-02
    • python字符的获取方式有哪些
      这篇文章主要介绍了python字符的获取方式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、通过索引获取字符>>> string ...
      99+
      2023-06-15
    • 获取代理ip的方式有哪些
      本篇内容主要讲解“获取代理ip的方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“获取代理ip的方式有哪些”吧!1、用程序扫描代理ip地址。你可以去百度搜索“HTTP代理”,可以找到很多免...
      99+
      2023-06-25
    • jquery获取input值的方式有哪些
      这篇文章主要介绍“jquery获取input值的方式有哪些”,在日常操作中,相信很多人在jquery获取input值的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
      99+
      2024-04-02
    • Vue3获取DOM节点的方式有哪些
      这篇文章主要讲解了“Vue3获取DOM节点的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3获取DOM节点的方式有哪些”吧!1 .原生js获取 DOM 节点:document...
      99+
      2023-07-05
    • Java中HashMap获取值的方式有哪些
      这篇文章主要介绍了Java中HashMap获取值的方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中HashMap获取值的方式有哪些文章都会有所收获,下面我们一起来看看吧。Java HashMa...
      99+
      2023-07-05
    • mysql中获取时间方式有哪些
      这篇文章将为大家详细讲解有关mysql中获取时间方式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、获取指定时间函数:date_format() 转换#  获取前一天时间的最大...
      99+
      2023-06-29
    • 【MyBatis】获取参数值的方式
       🍓个人主页:个人主页 🍒系列专栏:SSM框架 目录 1.单个字面量类型的参数  2.多个字面量类型的参数 3.map集合类型的参数 4.实体类类型的参数 5.使用@Param标识参数 ...
      99+
      2023-08-31
      mybatis java spring mysql spring boot
    • javascript获取表单元素的方式有哪些
      javascript中获取表单元素的方式有:1.通过的元素id属性获取;2.通过元素的name属性获取;3.通过元素的index属性获取;javascript中获取表单元素的方式有以下几种通过元素的id属性获取表单元素var pass=do...
      99+
      2024-04-02
    • springMVC获取请求参数的方式有哪些
      这篇文章主要讲解了“springMVC获取请求参数的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springMVC获取请求参数的方式有哪些”吧!初步认识可以直接在请求地址中给于请...
      99+
      2023-06-29
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作