示例的各个文件如下:

在pom里加了mybatis的依赖后,在application.properties加上:

  1. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
  2. spring.datasource.username=**
  3. spring.datasource.password=**
  4.  
  5. mybatis.mapperLocations=classpath*:mapper/*Mapper.xml
  6. mybatis.typeAliasesPackage=com.example.springmybatis.model
  7. mybatis.config-location=classpath:mybatis-config.xml

mybatis-config.xml可以配置的选项如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <!-- 参数设置 -->
  5. <settings>
  6. <!-- 这个配置使全局的映射器启用或禁用缓存 -->
  7. <setting name="cacheEnabled" value="true" />
  8. <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载 -->
  9. <setting name="lazyLoadingEnabled" value="true" />
  10. <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载 -->
  11. <setting name="aggressiveLazyLoading" value="true" />
  12. <!-- 允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动) -->
  13. <setting name="multipleResultSetsEnabled" value="true" />
  14. <!-- 使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动 -->
  15. <setting name="useColumnLabel" value="true" />
  16. <!-- 允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如Derby) -->
  17. <setting name="useGeneratedKeys" value="true" />
  18. <!-- 指定MyBatis如何自动映射列到字段/属性。PARTIAL只会自动映射简单,没有嵌套的结果。FULL会自动映射任意复杂的结果(嵌套的或其他情况) -->
  19. <setting name="autoMappingBehavior" value="PARTIAL" />
  20. <!--当检测出未知列(或未知属性)时,如何处理,默认情况下没有任何提示,这在测试的时候很不方便,不容易找到错误。
  21. NONE : 不做任何处理 (默认值)
  22. WARNING : 警告日志形式的详细信息
  23. FAILING : 映射失败,抛出异常和详细信息
  24. -->
  25. <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  26. <!-- 配置默认的执行器。SIMPLE执行器没有什么特别之处。REUSE执行器重用预处理语句。BATCH执行器重用语句和批量更新 -->
  27. <setting name="defaultExecutorType" value="SIMPLE" />
  28. <!-- 设置超时时间,它决定驱动等待一个数据库响应的时间 -->
  29. <setting name="defaultStatementTimeout" value="25000" />
  30. <!--设置查询返回值数量,可以被查询数值覆盖 -->
  31. <setting name="defaultFetchSize" value="100"/>
  32. <!-- 允许在嵌套语句中使用分页-->
  33. <setting name="safeRowBoundsEnabled" value="false"/>
  34. <!--是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。-->
  35. <setting name="mapUnderscoreToCamelCase" value="false"/>
  36. <!--MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。 默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。-->
  37. <setting name="localCacheScope" value="SESSION"/>
  38. <!-- 当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR OTHER。-->
  39. <setting name="jdbcTypeForNull" value="OTHER"/>
  40. <!-- 指定哪个对象的方法触发一次延迟加载。-->
  41. <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
  42. </settings>
  43.  
  44. <!-- 别名定义 -->
  45. <typeAliases>
  46. <typeAlias alias="pageAccessURL" type="com.lgm.mybatis.model.PageAccessURL" />
  47. </typeAliases>
  48.  
  49. <!--自定义类型处理器 -->
  50. <typeHandlers>
  51. <!-- <typeHandler handler="com.xhm.util.BooleanTypeHandlder" /> -->
  52. <!--扫描整个包下的自定义类型处理器-->
  53. <package name="com.xhm.util"/>
  54. </typeHandlers>
  55.  
  56. <!--plugins插件之 分页拦截器 -->
  57. <plugins>
  58. <plugin interceptor="com.xhm.util.PageInterceptor"></plugin>
  59. </plugins>
  60.  
  61. <!--配置environment环境-->
  62. <environments default="development">
  63. <!-- 环境配置1,每个SqlSessionFactory对应一个环境 -->
  64. <environment id="development1">
  65. <!-- 事务配置 type= JDBC、MANAGED 1.JDBC:这个配置直接简单使用了JDBC的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。
  66. 2.MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期(比如Spring或JEE应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望这样,因此如果你需要从连接中停止它,将closeConnection属性设置为false -->
  67. <transactionManager type="JDBC" />
  68. <!-- <transactionManager type="MANAGED">
  69. <property name="closeConnection" value="false"/>
  70. </transactionManager> -->
  71. <!-- 数据源类型:type = UNPOOLED、POOLED、JNDI 1.UNPOOLED:这个数据源的实现是每次被请求时简单打开和关闭连接。它有一点慢,这是对简单应用程序的一个很好的选择,因为它不需要及时的可用连接。
  72. 不同的数据库对这个的表现也是不一样的,所以对某些数据库来说配置数据源并不重要,这个配置也是闲置的 2.POOLED:这是JDBC连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的初始连接和认证时间。
  73. 这是一种当前Web应用程序用来快速响应请求很流行的方法。 3.JNDI:这个数据源的实现是为了使用如Spring或应用服务器这类的容器,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用 -->
  74. <dataSource type="UNPOOLED">
  75. <property name="driver" value="com.mysql.jdbc.Driver" />
  76. <property name="url" value="jdbc:mysql://localhost:3306/xhm" />
  77. <property name="username" value="root" />
  78. <property name="password" value="root" />
  79. <!-- 默认连接事务隔离级别 <property name="defaultTransactionIsolationLevel" value=""
  80. /> -->
  81. </dataSource>
  82. </environment>
  83.  
  84. <!-- 环境配置2 -->
  85. <environment id="development2">
  86. <transactionManager type="JDBC" />
  87. <dataSource type="POOLED">
  88. <property name="driver" value="com.mysql.jdbc.Driver" />
  89. <property name="url" value="jdbc:mysql://localhost:3306/xhm" />
  90. <property name="username" value="root" />
  91. <property name="password" value="root" />
  92. <!-- 在任意时间存在的活动(也就是正在使用)连接的数量 -->
  93. <property name="poolMaximumActiveConnections" value="10" />
  94. <!-- 任意时间存在的空闲连接数 -->
  95. <property name="poolMaximumIdleConnections" value="5" />
  96. <!-- 在被强制返回之前,池中连接被检查的时间 -->
  97. <property name="poolMaximumCheckoutTime" value="20000" />
  98. <!-- 这是给连接池一个打印日志状态机会的低层次设置,还有重新尝试获得连接,这些情况下往往需要很长时间(为了避免连接池没有配置时静默失败) -->
  99. <property name="poolTimeToWait" value="20000" />
  100. <!-- 发送到数据的侦测查询,用来验证连接是否正常工作,并且准备接受请求。 -->
  101. <property name="poolPingQuery" value="NO PING QUERY SET" />
  102. <!-- 这是开启或禁用侦测查询。如果开启,你必须用一个合法的SQL语句(最好是很快速的)设置poolPingQuery属性 -->
  103. <property name="poolPingEnabled" value="false" />
  104. <!-- 这是用来配置poolPingQuery多次时间被用一次。这可以被设置匹配标准的数据库连接超时时间,来避免不必要的侦测 -->
  105. <property name="poolPingConnectionsNotUsedFor" value="0" />
  106. </dataSource>
  107. </environment>
  108.  
  109. <!-- 环境配置3 -->
  110. <environment id="development3">
  111. <transactionManager type="JDBC" />
  112. <dataSource type="JNDI">
  113. <property name="data_source" value="java:comp/env/jndi/mybatis" />
  114. <property name="env.encoding" value="UTF8" />
  115. <!-- <property name="initial_context" value=""/> <property name="env.encoding"
  116. value="UTF8"/> -->
  117. </dataSource>
  118. </environment>
  119. </environments>
  120.  
  121. <!-- 映射文件,mapper的配置文件 -->
  122. <mappers>
  123. <!--直接映射到相应的mapper文件-->
  124. <mapper resource="com/xhm/mapper/UserMapper.xml"/>
  125. <!--扫描包路径下所有xxMapper.xml文件-->
  126. <package name="com.xhm.mapper"/>
  127. </mappers>
  128. </configuration>

在项目中,一般不需要特殊配置,主要是开启驼峰命名。我使用的一般配置是:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6.  
  7. <settings>
  8. <!-- Globally enables or disables any caches configured in any mapper under this configuration -->
  9. <setting name="cacheEnabled" value="true"/>
  10. <!-- Sets the number of seconds the driver will wait for a response from the database -->
  11. <setting name="defaultStatementTimeout" value="3000"/>
  12. <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn -->
  13. <setting name="mapUnderscoreToCamelCase" value="true"/>
  14. <!-- Allows JDBC support for generated keys. A compatible driver is required.
  15. This setting forces generated keys to be used if set to true,
  16. as some drivers deny compatibility but still work -->
  17. <setting name="useGeneratedKeys" value="true"/>
  18. </settings>
  19.  
  20. <!-- Continue going here -->
  21.  
  22. </configuration>

在resource文件夹新建CountryMapper.xml,用xml配置sql。内容如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  4. <mapper namespace="com.example.springmybatis.mapper.CountryMapper">
  5. <select id="selectAll" resultType="Country">
  6. select id,countryname,countrycode from country
  7. </select>
  8. </mapper>

controller中使用

新建mapper包,创建CountryMapper接口文件,内容如下:

  1. package com.example.springmybatis.mapper;
  2.  
  3. import com.example.springmybatis.model.Country;
  4. import org.apache.ibatis.annotations.Mapper;
  5.  
  6. import java.util.List;
  7.  
  8. @Mapper
  9. public interface CountryMapper {
  10. List<Country> selectAll();
  11. }

同时新建controller和service包和类,如下:

controoller:

  1. package com.example.springmybatis.controller;
  2.  
  3. import com.alibaba.fastjson.JSON;
  4. import com.example.springmybatis.service.CountryService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RestController;
  8.  
  9. @RestController
  10. public class countryController {
  11.  
  12. @Autowired
  13. private CountryService countryService;
  14.  
  15. @RequestMapping("/selectAll")
  16. public String selectAll(){
  17. return JSON.toJSONString(countryService.selectAll());
  18. }
  19. }

service:

  1. package com.example.springmybatis.service;
  2.  
  3. import com.example.springmybatis.mapper.CountryMapper;
  4. import com.example.springmybatis.model.Country;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7.  
  8. import java.util.List;
  9.  
  10. @Service
  11. public class CountryService {
  12.  
  13. @Autowired
  14. private CountryMapper countryMapper;
  15.  
  16. public List<Country> selectAll(){
  17. return countryMapper.selectAll();
  18. }
  19. }

model就省略了,只有id,countryName,countryCode三个属性。

Spring Boot配置Mybatis的更多相关文章

  1. spring boot配置mybatis和事务管理

    spring boot配置mybatis和事务管理 一.spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spri ...

  2. Spring boot 配置 mybatis xml和动态SQL 分页配置

    更新时间 2018年4月30日23:27:07 1.pom.xml <?xml version="1.0" encoding="UTF-8"?> & ...

  3. spring boot系列(六)spring boot 配置mybatis(xml简化版)

    orm框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句SQL的hibernate,一个是可以灵活调试动态sql的mybatis,两者各有特点,在企业级系统开 ...

  4. spring boot 配置mybatis plus 控制台打印sql

    spring boot 版本2.1.5 mybatis plus 版本3.1.1 aplication.properties中添加 logging.level.com.demo.system.mapp ...

  5. spring boot + druid + mybatis + atomikos 多数据源配置 并支持分布式事务

    文章目录 一.综述 1.1 项目说明 1.2 项目结构 二.配置多数据源并支持分布式事务 2.1 导入基本依赖 2.2 在yml中配置多数据源信息 2.3 进行多数据源的配置 三.整合结果测试 3.1 ...

  6. spring boot集成mybatis(3) - mybatis generator 配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  7. 太妙了!Spring boot 整合 Mybatis Druid,还能配置监控?

    Spring boot 整合 Mybatis Druid并配置监控 添加依赖 <!--druid--> <dependency> <groupId>com.alib ...

  8. Spring Boot 整合 Mybatis 实现 Druid 多数据源详解

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “清醒时做事,糊涂时跑步,大怒时睡觉,独处时思考” 本文提纲一.多数据源的应用场景二.运行 sp ...

  9. 使用intelliJ创建 spring boot + gradle + mybatis站点

    Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧.Net同事问到,我想我也可以写 ...

随机推荐

  1. wpf 水波进度条 用户控件

    之前看公司web前端做了个 圆形的水波纹 进度条,就想用wpf 做一个,奈何自己太菜 一直做不出来,在看过 “普通的地球人” 的 “ WPF实现三星手机充电界面 博客之后 我也来照葫芦画个瓢. 废话不 ...

  2. 【javascript】您好, 您要的ECMAScript6速记套餐到了 (一)

    [前言]本文“严重参考” 自阮一峰老师写的ES6文档,在此我郑重感谢他沉默无声的帮助 总结一下ES6为 javascript中的 对象/数组/函数 这JS三巨头所提供的更简洁优雅的书写方式,以及扩展的 ...

  3. 控制台API函数----HANDLE、SetConsoleCursorPosition、SetConsoleTextAttribute

    控制台API函数 调用相关文本界面控制的API函数,这些函数可分为三类. 一.用于控制台窗口控制的函数(包括窗口的缓冲区大小.窗口前景字符和背景颜色.窗口标题.大小和位置等): 二.用于控制台输入输出 ...

  4. mysql存储过程双重循环示例

    BEGIN ); DECLARE done INT DEFAULT FALSE; DECLARE cursor_rule CURSOR FOR SELECT s.id FROM d_menu_type ...

  5. DevOps - CI - Sonar

    Sonar 官方信息 https://www.sonarqube.org/ https://www.sonarqube.org/downloads/ https://docs.sonarqube.or ...

  6. linux中jdk的安装与配置

    一.卸载系统已有的JDK 1.查看已安装的jdk rpm -qa|grep jdk 2.卸载jdk rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1. ...

  7. iOS-xcconfig环境变量那些事(配置环境的配置)

    前言 在配置宏定义参数时,会发现一个问题,在需要临时修改或者测试一些数据时,修改宏,如果不修改,就多写一个,注释掉原来的,然后测试后,再换回来,当然了,如果一两个宏,可以这样,但是,如果每次改的比较多 ...

  8. [原创]K8飞刀20150720 新增Shellcode Loader支持多种格式

    工具: K8飞刀编译: 自己查壳组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.blog.163.com发布: 2015/7/20 3:00:18 简介: ...

  9. 09-04 java 接口

    接口的引出 继续回到我们的猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不.但是,现在有很多的驯养员或者是驯兽师,可以训练出:猫钻火圈,狗跳高,狗做计算等. 而这些额外的动作,并不是所有猫 ...

  10. 【转载】SQL Server 版本列表

    Quick summary:     RTM (no SP) SP1 SP2 SP3 SP4  SQL Server 2017     codename vNext not yet released  ...