mybatis java类注解式_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 getAll() {
return mapper.getAll();
}
}
mapper.xml
/p>
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select * from user
纯注解方式
纯注解方式需要一个配置类来代替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 users = userService.getAll();
for (User user:users) {
System.out.println(user);
}
}
}
mybatis java类注解式_Spring整合Mybatis注解方式相关推荐
- mybatis java类注解式_mybatis注解详解
http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html mybatis的原身是ibatis,现在已经脱离了apache基金会,新官网是http://ww ...
- mysql动态配置数据源_Spring整合Mybatis实现动态数据源切换教程配置
一.摘要 这篇文章将介绍Spring整合Mybatis 如何完成SqlSessionFactory的动态切换的.并且会简单的介绍下MyBatis整合Spring中的官方的相关代码. Spring整合M ...
- @select注解_Mybatis基本知识十七:Mybatis注解式开发-单表注解式开发
上一篇文章:<Mybatis基本知识十六:查询缓存之第三方查询缓存> 若文中有纰漏,请多多指正!!! 1.前言 使用Mybatis进行开发,不仅可以使用mapper配置文件进行开发,也可以 ...
- java类加入到spring容器_普通java类加入spring容器的四种方式
今天在自己开发的工具类中使用了spring注入的方式调用了其他类,但是发生的报错,在整理了后今天小结一下. 首先简单介绍下spring容器,spring容器是整个spring框架的核心,通常我们说的s ...
- java ehcahce刷新_Spring整合ehcache 注解实现查询缓存,并实现实时缓存更新或删除...
写在前面:上一篇博客写了spring cache和ehcache的基本介绍,个人建议先把这些最基本的知识了解了才能对今天主题有所感触.不多说了,开干! 注:引入jar net.sf.ehcache e ...
- mybatis获取mysql源数据类型_spring集成mybatis实现mysql数据库读写分离
前言 在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈.幸运的是目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上. ...
- java 动态添加定时器_Spring整合Quartz实现动态定时器的示例代码
一.版本说明 spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x,不然会出错. 原因:spring对于quartz的支持实现,org.springf ...
- java分布式事务 实例_spring整合atomikos实现分布式事务的方法示例
前言 Atomikos 是一个为Java平台提供增值服务的并且开源类事务管理器,主要用于处理跨数据库事务,比如某个指令在A库和B库都有写操作,业务上要求A库和B库的写操作要具有原子性,这时候就可以用到 ...
- Spring boot Mybatis 整合(注解版)
之前写过一篇关于springboot 与 mybatis整合的博文,使用了一段时间spring-data-jpa,发现那种方式真的是太爽了,mybatis的xml的映射配置总觉得有点麻烦.接口定义和映 ...
最新文章
- 开放-封闭原则(The Open-Closed Principle,OCP)
- python 修改xml_如何在python中更新/修改XML文件?
- 2019 GDUT Rating Contest II : Problem G. Snow Boots
- 今年的hsctf里遇到了一个比较少见的nds逆向题目,侥幸拿下一血
- java 单例 缓存hashmap_java 、HashMap 和单例
- 比乐高还要好玩,50种奇妙装置玩法,将STEM教育一网打尽
- 2003 r2 64 iis php mysql_关于在win2003中,iis+php+mysql 配置的问题
- 范式的数据库具体解释
- 相位测试音频mp3_音频与相位的关系
- 程序员眼中的“鼠标宏”
- 经典语录大全微信小程序源码下载多种分类语录
- android 设计师是处女座的,处女座速成法!设计师的像素眼是怎样炼成的?
- 数据分析之Excel的基本功能(上)
- winedt配制miktex路径设置
- 华为2018软赛心得(西北36强)
- 灰色关联分析法无量纲处理方法
- 解读高端PCB板的设计工艺!
- [ 7天学习Python编程,第一天]-----1.4 Python main函数:了解__main__【python舵手】
- [ol-cesium] ol-cesium学习 二维切换三维 npm启动
- 里恩EDC论临床试验中与第三方中心实验室实时电子化传输和接收的技术实现以及风险应对
热门文章
- open函数返回-1_4.6 linux的系统调用执行探究(1)
- Python中查找包含它的列表元素的索引,index报错!!!
- 遍历删除_面试难题:List 如何一边遍历,一边删除?
- 谷歌 | 多任务学习,如何挑选有效的辅助任务?只需一个公式!
- Jarvis:一个值得关注的多模态端到端人机对话框架,针对所有行业适配
- 今年阿里双十一提升广告点击率居然用的是这种算法?!
- 细说ReactiveCocoa的冷信号与热信号(一)
- 深度学习在美团配送ETA预估中的探索与实践 1
- 论文浅尝 | 5 篇顶会论文带你了解知识图谱最新研究进展
- Nginx 简介和使用