Spring整合Mybatis注解方式

Spring整合Mybatis注解方式Spring整合Mybatis(注解方式)目录Spring整合Mybatis(注解方式)环境准备纯注解方式配置类具体内容测试类具体内容环境准备jar包:Spring所需依赖:spring-context、spring-aspects、aspectjrt、aspectjweaver、spring-tx、spring-jdbcmybatis所需要:mybatis、mybatis-spring、mysql-connector-java、(druid、c3p0、HikariCP)辅

大家好,又见面了,我是你们的朋友全栈君。

Spring整合Mybatis(注解方式)

目录

  • Spring整合Mybatis(注解方式)
    • 环境准备
    • 纯注解方式
    • 配置类具体内容
    • 测试类具体内容

环境准备

jar包:

  • Spring所需依赖:spring-context、spring-aspects、aspectjrt、aspectjweaver、spring-tx、spring-jdbc
  • mybatis所需要:mybatis、mybatis-spring、mysql-connector-java、(druid、c3p0、HikariCP)
  • 辅助性依赖:logback-classic、lombok、spring-test、junit、mapper(可选)、pagehelper(可选)

数据库:mysql

服务层代码

@Service
@Data
public class UserService implements IUserService { 
   

    private SqlSessionTemplate sqlSession;
    private UserMapper mapper;

    public UserService(SqlSessionTemplate sqlSession){ 
   
        this.sqlSession=sqlSession;
        mapper=sqlSession.getMapper(UserMapper.class);
    }

    @Override
    public List<User> getAll() { 
   
        return mapper.getAll();
    }
}

mapper.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.hello.mapper.UserMapper">

    <select id="getAll" resultType="user">
        select * from user
    </select>

</mapper>

纯注解方式
纯注解方式需要一个配置类来代替xml配置文件的作用,需在配置文件上注

//注解扫描
@ComponentScan(basePackages = "com.hello")
//声明当前类为配置类
@Configuration

配置类中@Bean相当于xml的标签
通过@Bean将类放入spring容器,也可以通过注解扫描

配置类具体内容

@ComponentScan(basePackages = "com.hello")
@Configuration
public class Config { 
   

    //配置数据库连接池
    @Bean
    public DataSource dataSource(){ 
   
    	//使用HikariCP连接池
        HikariDataSource hikariDataSource = new HikariDataSource();
        //配置连接池的jdbcUrl属性
        hikariDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm?servexrTimezone=GMT%2B8");
        //账号
        hikariDataSource.setUsername("root");
        //密码
        hikariDataSource.setPassword("root");
        //驱动Driver
        hikariDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        return hikariDataSource;
    }

    //配置sqlSessionFactory
    @Bean
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception { 
   
    	//在spring和Mybatis整合中采用mybatis提供的SQLSessionFactoryBean对象
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        //为sqlSessionFatoryBean设置连接池属性
        sqlSessionFactoryBean.setDataSource(dataSource());
        //获取PathMatchingResourcePatternResolver对象为扫描mapper文件做准备
        PathMatchingResourcePatternResolver path = new PathMatchingResourcePatternResolver();
		//设置mapper文件位置 
 sqlSessionFactoryBean.setMapperLocations(path.getResources("classpath*:com/hello/mapper/**/*.xml"));
 		//为javaBean对象设置别名
        sqlSessionFactoryBean.setTypeAliasesPackage("com.hello.bean");
        //返回SqlSessionFactory对象
       return  sqlSessionFactoryBean.getObject();
    }

    //配置sqlSession
    @Bean
    public SqlSessionTemplate sqlSessionTemplate() throws Exception { 
   
    //将SqlSessionFactory作为参数传入构造方法
        SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactoryBean());
        return sqlSessionTemplate;
    }

    @Bean
    public UserService userService() throws Exception { 
   
        UserService userService = new UserService(sqlSessionTemplate());
        return userService;
    }
}

测试类具体内容

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { 
   Config.class})
public class AppTest 
{ 
   
    @Autowired
    public UserService userService;
    @Test
    public void getALL(){ 
   
        List<User> users = userService.getAll();
        for (User user:users) { 
   
            System.out.println(user);
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133518.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • FLAG_ACTIVITY_CLEAR_TOP的使用

    FLAG_ACTIVITY_CLEAR_TOP的使用本例使用FLAG_ACTIVITY_CLEAR_TOP退出整个应用程序:多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。补充:finish()和system(0)都只能退出单个activity。我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在D窗口打开A窗口时在Intent中直接加入标志Int

    2022年7月17日
  • BP神经网络原理及matlab实例

    BP神经网络原理及matlab实例转载:http://blog.csdn.net/u013007900/article/details/50118945上一次我们讲了M-P模型,它实际上就是对单个神经元的一种建模,还不足以模拟人脑神经系统的功能。由这些人工神经元构建出来的网络,才能够具有学习、联想、记忆和模式识别的能力。BP网络就是一种简单的人工神经网络。 本文具体来介绍一下一种非常常见的神经网络模型——反

    2022年7月20日
  • 嘉立创pcb工艺_流程图制作

    嘉立创pcb工艺_流程图制作现在做板子基本上是选择嘉立创和捷配,今天看一下嘉立创如何下PCB和STM贴片单,改天再写一下捷配的下单我喜欢用下单助手,比较方便注意需要把自己的板子的PCB文件用压缩软件生成压缩包文件,名字自己取

    2022年8月1日
  • initramfs实作「建议收藏」

    initramfs实作「建议收藏」这个是翻译来的,原文地址:http://www.landley.net/writing/rootfs-howto.html //TechTip:Howtouseinitramfs.怎样使用initramfs 工作过程简述在2.6kernel启动时,它把rootfs作为它的第一个文件系统挂载(注意:这里的rootfs是真名!!!不是roo

    2022年8月11日
  • jvm垃圾回收详解_java 垃圾回收器

    jvm垃圾回收详解_java 垃圾回收器JVM垃圾回收1.概述JVM会自动帮程序员进行垃圾回收,并不需要程序员手动的进行垃圾回收(C++等语言需要自己手动回收垃圾),了解JVM的垃圾回收,可以帮程序员写出占用内存更小、更高效的程序。1.1什么是垃圾?垃圾是指运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。1.2什么区域需要进行垃圾回收JVM的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭,因此这几个区域的内存分配和回

    2022年9月12日
  • 数据平滑处理

    数据平滑处理

    2021年11月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号