从0到1使用MyBatis
MyBatis作为最流行的数据中间层,成为企业Java软件开发中非常重要的软件。
一、基本配置
1、首先需要导入Maven
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.3</version>
</dependency>
2、配置Mapper扫描配置器
然后在Spring容器加载bean时指定的配置文件中定义MapperScannerConfigurer,指定sqlSessionFactoryBeanName和basePackage
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<property name="basePackage" value="com.test.mapper" />
</bean>
其中sqlSessionFactoryBeanName的值sqlSessionFactory指定一个Session工厂实现Bean
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="datasource" />
<property name="typeAliasesPackage" value="com.test.entities" />
<property name="mapperLocations" value="classpath*:mapper/*Mapper.xml" />
</bean>
SqlSessionFactoryBean的第一个属性是dataSource,他的类型是javax.sql.DataSource,可以配置任意一个实现了该接口的类。比如连接池com.mchange.v2.c3p0.ComboPooledDataSource。
比如使用c3p0的datasource案例如下:
<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.uid}" />
<property name="password" value="${jdbc.pwd}" />
<property name="acquireIncrement" value="5" />
<property name="initialPoolSize" value="10" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="20" />
</bean>
其中的配置信息,可以在引用的db.properties中指定
<context:property-placeholder location="classpath*:db.properties" />
db.properites定义如下
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.9.51:3306/testdb
jdbc.uid=root
jdbc.pwd=123456
3、新建接口
接着在basePackage定义的目录com.test.mapper下添加接口
/**
* 根据图书编号获得图书对象
*/
public Book getBookById(@Param("id") int id);
4、新建实现xml
最后在mapperLocations定义的classpath:mapper/Mapper.xml中实现sql语句,需要注意的是方法名和id要一致
<mapper namespace="com.test.mapper.BookMapper">
<select id="getBookById" resultType="com.newqur.entities.Book">
select id, title, price, publishDate from books where id = #{id}
</select>
</mapper>
二、在SpringBoot中的使用方式
2.1、使用如下pom
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
如果使用了pagehelper的starter,则可以只导入如下的Maven库即可
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
2.2、在配置类中定义接口扫描范围
@Configuration
@EnableTransactionManagement
@MapperScan({"com.test.mapper","com.test.portal.dao"})
public class MyBatisConfig {
}
@Configuration用于指定该类为配置入口类
可以在MappderScan中定义多个接口包名
@EnableTransactionManagement是用于开启事务的
2.3、在yml中配置Scanner扫描器
mybatis:
mapper-locations:
- classpath:dao/*.xml
- classpath*:com/**/mapper/*.xml
可以配置多个扫描路径
2.4、配置jdbc数据源
可以是c3p0、dbcp或者druid、HikariCP等任意数据源
spring:
datasource:
url: jdbc:mysql://192.168.9.51:3306/testdb
username: root
password: 123456
druid:
initial-size: 5 #连接池初始化大小
min-idle: 10 #最小空闲连接数
max-active: 20 #最大连接数
从0到1使用MyBatis的更多相关文章
- SpringBoot2.0之四 简单整合MyBatis
从最开始的SSH(Struts+Spring+Hibernate),到后来的SMM(SpringMVC+Spring+MyBatis),到目前的S(SpringBoot),随着框架的不断更新换代,也为 ...
- SpringBoot(十一):springboot2.0.2下配置mybatis generator环境,并自定义字段/getter/settetr注释
Mybatis Generator是供开发者在mybatis开发时,快速构建mapper xml,mapper类,model类的一个插件工具.它相对来说对开发者是有很大的帮助的,但是它也有不足之处,比 ...
- 构建第一个Spring Boot2.0应用之集成mybatis(六)
一.环境: IDE:IntelliJ IDEA 2017.1.1 JDK:1.8.0_161 Maven:3.3.9 springboot:2.0.2.RELEASE 二.步骤 方式一:利用配置文件配 ...
- 构建第一个Spring Boot2.0应用之集成mybatis、Druid(七)
一.环境: IDE:IntelliJ IDEA 2017.1.1 JDK:1.8.0_161 Maven:3.3.9 springboot:2.0.2.RELEASE 二.说明: 本文综合之 ...
- 基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis
SpringBoot 整合 Mybatis 有两种常用的方式,一种就是我们常见的 xml 的方式 ,还有一种是全注解的方式.我觉得这两者没有谁比谁好,在 SQL 语句不太长的情况下,我觉得全注解的方式 ...
- springboot学习入门简易版九---springboot2.0整合多数据源mybatis mysql8+(22)
一个项目中配置多个数据源(链接不同库jdbc),无限大,具体多少根据内存大小 项目中多数据源如何划分:分包名(业务)或注解方式.分包名方式类似多个不同的jar,同业务需求放一个包中. 分包方式配置多数 ...
- 从0开始完成SpringBoot+Mybatis实现增删改查
1.准备知识: 1)需要掌握的知识: Java基础,JavaWeb开发基础,Spring基础(没有Spring的基础也可以,接触过Spring最好),ajax,Jquery,Mybatis. 2)项目 ...
- 问题-MyBatis不识别Integer值为0的数据
问题-MyBatis不识别Integer值为0的数据 问题:使用MyBatis的过程中,发现一个值为0的数据,Mybatis所识别,最后定位才发现,是自己的写法有问题, <if test=&qu ...
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0'
七月 05, 2018 10:26:54 上午 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRul ...
随机推荐
- Spring Cloud服务的注册与发现(Eureka)
一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...
- 系统学习javaweb3----HTML语言3(结束)
说明:昨天是北方小年,需要做的事情有点多,需要祭灶,扫尘.包饺子,吃糖瓜儿,学习时间有点少,所以今天将两天的知识综合一下发出. 自我感觉:虽然感觉大致都了解了HTML语言,但是感觉自己面对程序还是无从 ...
- 高级I/O
1.阻塞问题的几种解决模型 1.1 非阻塞模型:类似于死循环,需要适当加休眠,防止cpu占用太高:效率较低 1.2 线程异步:效率最高的一种解决方案 1.3 I/O多路转接与复用 select(低) ...
- 关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”
为了解答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”这个问题,也为了能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点和容易犯糊涂的地方再系统 ...
- [LC] 103. Binary Tree Zigzag Level Order Traversal
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
- 吴裕雄--天生自然 HADOOP大数据分布式处理:使用XShell远程连接主机与服务器并配置它们之间SSH免密登录
- LintCode排序
1.LintCode整数排序 给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法. 您在真实的面试中是否遇到过这个题? 是 样例 对于数组 [3, 2, 1, ...
- 如果你的unordered_map头文件报错请看这里
请将include<unordered_map>头文件换成下面代码 #if(__cplusplus == 201103L) #include <unordered_map> # ...
- FastJson的学习之JSON互相转Map集合,List集合,JavaBean
https://blog.csdn.net/weixin_36910300/article/details/79182120 创建两个实体类 一个是部门类,一个是部门员工类 部门员工类 public ...
- Java中的字符串比较
在C++中,两个字符串比较的代码可以为: (string1==string2) 但是在java中,这个代码即使在两个字符串完全相同的情况下也会返回 false ,Java中必须使用 string1.e ...