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);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • hdu 5685

    hdu 5685

  • 在 LaTeX 中插入图片「建议收藏」

    在 LaTeX 中插入图片「建议收藏」在科研论文中,图片是一个非常重要的组成部分。LaTeX提供了许多定制化图片的功能。这篇文章将会介绍如何用最常见的格式插入图片、缩放图片、旋转图片,以及如何在文档中引用这些图片。

  • stringbuffer stringbuilder区别(其他和其它的区别)

    String字符串常量StringBuffer字符串变量(线程安全)StringBuilder字符串变量(非线程安全) 简要的说,String类型和StringBuffer类型的主要性能区别其实在于String是不可变的对象,因此在每次对String类型进行改变的时候其实都等同于生成了一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字

  • Java中获取时间戳

    Java中获取时间戳**Java语言中关于三种时间戳的获取之心得**最近项目开发过程中发现了项目中获取时间戳的业务。而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式。1.System.currentTimeMillis()System类中的currentTimeMillis()方法是三种方式中效率最好的,运行时间最短。开发中如果设计到效率问题,推荐使用此种方式获取。System.currentTimeMillis()2.newDate().getTime()除

  • 跟我学Telerik公司的RadControls控件(四)

    跟我学Telerik公司的RadControls控件(四)
    朋友们、同行们通过前面《跟我学Telerik公司的RadControls控件》系列三篇的学习,你一定会内心有一种涌动,有种相见(RadControls)恨晚的感觉。那就一起加入学习RadControls控件的行列,为IT的朋友提供更加明了化的技术大餐,欢迎……
      今天我将和你分享另一个更加完美的技术控件(TelerikRadTreeview)控件:  RadTreeview 是一个功能非常丰富的Asp.Net控件。它可以让具有层次结构的数据的显示,管理,导航变得轻而易举,该产品提供

  • js删除某个数组_js数组删除对象

    js删除某个数组_js数组删除对象Array.prototype.remove=function(val){ varindex=this.indexOf(val); if(index>-1){ this.splice(index,1); } };vardata=[1,2,3,4,5,6]data.remove(index);//你要删除的数

发表回复

您的电子邮箱地址不会被公开。

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