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);

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020十大新兴技术揭晓!每一项都可能颠覆我们的生活

转自丨科技日报作者丨张佳欣编辑丨翟丽影全世界都在竞相研发新冠肺炎疫苗,前景令人鼓舞,我们可能会在破纪录的时间内研发出疫苗。但在未来新冠疫情仍在蔓延的情况下,技术能帮助我们更快地实现目标吗?世界经济论坛和《科学美国人》杂志本月10…

c#_导出table功能

一:第一张导出方法,简单快捷 请注意:一般表格都有真分页,查询数据时候注意把分页条件去掉#region 此处是获取的list数组 然后转table再调用ExportExcel var list"你的list数据库源"DataTable dt new DataTable();dt.…

java 协议处理器_协议处理器urlstreamhandler及contenthandler

先看段打开网页的代码:URL urlnew URL("http://souljava.blog.163.com/");URLConnection connectionurl.openConnection();connection.getInputStream();问题1:客户端浏览器怎么判断接受到的是什么数据类型?回答:java的…

自己做一个小项目python_【Python】第一个微信小项目

一、微信好友数据分析功能介绍1.爬取好友列表,显示好友昵称、性别和地域和签名, 文件保存为 xlsx 格式2.统计好友的地域分布,并且做成词云和可视化展示在地图上3.获取所有好友的头像,合并成一张大图二、需要的库1、Pyecharts:一个用于生成ech…

RISC-V的自定义CPU悖论

来源:内容编译自「eejournal」,谢谢。随着这些年的发展,RISC-V的受重视程度与与日俱增。这主要因为它是免费的、灵活的,并且速度很快。这使RISC-V成为许多开发人员的安全便捷选择。但是您会认为RISC-V是通用RISC处理器还是定制的随…

java计算加速减速_Javascript加速运动与减速运动

加速运动,即一个物体运动时速度越来越快;减速运动,即一个物体运动时速度越来越慢。现在用Javascript来模拟这两个效果,原理就是用setInterval或setTimeout动态改变一个元素与另外一个元素的距离,如xxx.style.left或xxx…

python 运维包_基础入门_Python-模块和包.运维开发中__import__动态导入最佳实践?

常规导入:import module_name[,module1,...]from module_name import [*|child[,child1,...]from module_name import [*|child[,child1,...] as alias_name注意: 导入语句可出现在程序任意位置,自定义包要实现from module_name import *的效果则此模块必须在__init__.py实现__…

华为宣布出售荣耀,声明来了

来源:澎湃新闻综合华为官网、《深圳特区报》今天,华为发表声明,整体出售荣耀业务资产。对于交割后的荣耀,华为不占有任何股份,也不参与经营管理与决策。11月17日一早,荣耀最终的出售方案公布。多家企业在《…

Node.js教程-mysql模块

概述 在Node.js中,mysql模块是实现MySQL协议的JavaScript客户端工具。Node.js程序通过与MySQL建立链接,然后可对数据进行增、删、改、查等操作。 安装 由于mysql模块不是Node.js内置模块,需手动安装 npm i mysql注意:若MySQL服…

java 几种引用类型_Java 四种引用类型总结-Fun言

1. Java引用介绍Java从1.2版本开始引入了4种引用,这4种引用的级别由高到低依次为:强引用 > 软引用 > 弱引用 > 虚引用⑴ 强引用(Strong Reference)强引用是使用最普遍的引用,也是赋值的默认引用。如果一个对象具有强引用&…

JS运算符类型

一、运算符类型 1、算术运算符&#xff1a;用于各类数值运算&#xff0c;包括加()、减(-)、乘(*)、除(/)、求余(或称模运算&#xff0c;%)、自增()、自减(--)共七种。2、关系运算符&#xff1a;用于比较运算。包括大于&#xff08;>&#xff09;、小于&#xff08;<&…

python关于字符串的内置函数_Python 字符串内置函数(二)

# 2.格式化相关# ljust(width) 函数 获取固定长度&#xff0c;左对齐&#xff0c;右边不够用空格补齐# rjust(width) 函数 获取固定长度&#xff0c;右对齐&#xff0c;左边不够用空格补齐# center(width) 函数 获取固定长度&#xff0c;中间对齐&#xff0c;两边不够用空格补齐…

边缘计算4.0正急速驶来,你做好准备了吗?

物联网智库 整理发布导 读近十年间&#xff0c;各行各业的企业都经历着数字化技术和产品对传统生产经营模式的冲击。人工智能、大数据、区块链、自动化等技术的日渐完善&#xff0c;让企业的生产效率和业务模式发生了翻天覆地的变化。

java中for的常规用法_Java for循环的几种用法详解

本文非常适合初学Java的程序员&#xff0c;主要是来了解一下Java中的几种for循环用法&#xff0c;分析得十分详细&#xff0c;一起来看看。J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环&#xff0c;可以用更简单地方式来遍历数组和Collection等类型的对象。本文介…

运维-替换-修改kibana徽标

作为一名纯运维人员&#xff0c;想更改kibana的徽标。 并不能像开发一样去看源码并修改源码。 所以我们可以替换徽标。 先来一个效果图。我的版本是5.5.1。 具体的修改过程&#xff1a; 在kibana安装路径下面。 optimize/bundles/ 0cebf3d61338c454670b1c5bdf5d6d8d.svg 这…

python中的变量的作用_Python中的变量作用域

python中变量作用域包括&#xff1a;L (Local) 局部作用域&#xff0c;函数内部声明但没有使用global的变量E (Enclosing) 闭包函数外的函数中&#xff0c;def或者lambda的本地作用域G (Global) 全局作用域&#xff0c;函数中使用global声明的变量或在模块层声明的变量B (Built…

欧拉公式——真正的宇宙第一公式

来源&#xff1a;数学中国欧拉公式是数学里最令人着迷的公式之一&#xff0c;它将数学里最重要的几个常数联系到了一起&#xff1a;两个超越数&#xff1a;自然对数的底e&#xff0c;圆周率π&#xff1b;两个单位&#xff1a;虚数单位i和自然数的单位1&#xff0c;以及数学里常…

SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件

我们这一一篇博客讲的是如何整合Springboot和Mybatis框架&#xff0c;然后使用generator自动生成mapper&#xff0c;pojo等文件。然后再使用阿里巴巴提供的开源连接池druid&#xff0c;这个连接池的好处我就不说了&#xff0c;集合了所有连接池的好处&#xff0c;并且还提供了监…

python提取部分字符串三参数_python3 字符串属性(三)

maketrans 和 translate的用法(配合使用)下面是python的英文用法解释maketrans(x, yNone, zNone, /)Return a translation table usable for str.translate().If there is only one argument, it must be a dictionary mapping Unicodeordinals (integers) or characters to Un…

java实现qq抢红包_Java实现抢红包功用

用多线程模仿多人一起抢红包。服务端将玩家发出的红包保存在一个行列里&#xff0c;然后用Job守时将红包信息推送给玩家。每一批玩家的抢红包恳求&#xff0c;其实操作的都是从行列中弹出的第一个红包元素&#xff0c;但当时的红包数量为空的时分&#xff0c;主动弹出下一个红包…