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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021 pycharm激活码_通用破解码

    2021 pycharm激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    52
  • 怎样和领导汇报工作,更容易获得升职加薪?谈谈和领导汇报的艺术

    怎样和领导汇报工作,更容易获得升职加薪?谈谈和领导汇报的艺术

    2022年2月14日
    46
  • nodejs安装与环境变量配置[通俗易懂]

    nodejs安装与环境变量配置[通俗易懂]NodeJsNode.js简介发展史特性模块下载nodejs系统环境nodejs(msi)方式的安装nodejs(zip)方式的安装环境配置Linux下安装Node测试参考资料Node.js简介Node是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。发布于2009年5月,由R…

    2022年6月12日
    41
  • 解决java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have availa[通俗易懂]

    解决java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have availa[通俗易懂]解决java.lang.RuntimeException:com.netflix.client.ClientException:Loadbalancerdoesnothaveavailableserverforclient:xxx-xxx-xxx小弟第一次发博客,不喜勿喷,工作经验(1个月)各位大佬你们,最近在接触微服务项目,在运行的过程中遇到许多问题,第一次写博客,就发…

    2022年7月24日
    16
  • matlab 神经网络工具箱 nntraintool 详解

    matlab 神经网络工具箱 nntraintool 详解概览NeuralNetwork该部分展示了神经网络的结构,从结构图中可以看出该网络有三个隐含层,神经元个数分别为9个、8个、7个Algorithms该部分展示了该网络所使用的训练算法,可以看出DataDivision:该网络采用随机划分的方法将数据集划分为trainingset、validationset、testsetTraining:该网络采用Levenberg–Mar…

    2022年6月20日
    73
  • 图解一致性哈希算法的基本原理

    图解一致性哈希算法的基本原理一致性哈希的基本原理一致性哈希算法是将每个Node节点映射到同一个圆上。将各Node的key采用hash计算,可得到一个整数数组。将该数组排序后,首尾相连即是一个圆。如下图所示简单来说,一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-2^32-1(即哈希值是一个32位无符号整形),整个哈希环如下:整个空间按顺时针方向组织,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、5、6……直到2^32-1,也就是说0点左侧..

    2022年7月27日
    2

发表回复

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

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