1、核心配置文件
- configuration(配置)
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- environment(环境变量)
- databaseIdProvider(数据库厂商标识)
- mappers(映射器)
2、environments(环境配置) 默认事务管理器:JDBC
默认连接池:POOLED
MyBatis可以配置成适应多种环境,但每个SqlSessionFactory实例只能选择一种环境。即可以有多个id不同的环境,default就是要使用的那个环境
文章图片
3、properties(属性) 【#|Mybatis学习 && 配置解析】有三种配置properties的方法:
方法一:使用外部配置文件db.properties,然后使用${}取值
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username = root
password = 123456
方法二:直接在mybatis配置文件中配置
方法三:可以在db.properties中配置一半,在mybatis配置文件中配置一半
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
注意:如果外部配置文件和mybatis配置文件中有同一字段,优先使用外部配置文件的
4、typeAliases(类型别名)
类型别名即为Java类型设置一个端的名字,存在的意义仅在于用来减少类完全限定名的冗余基本数据类型的别名是在前边加上_,如int的别名为__int
包装类的别名是将首字母变为小写,如Integer的别名为integer
有三种方法可以给实体类取别名:
方法一:在mybatis配置文件中编写typeAliases
方法二:可以指定一个包名,在没有使用注解的时候,会扫描这个包下的所有类,以类名首字母小写作为别名
方法三:在类名前使用注解,注意要导包
import org.apache.ibatis.type.Alias;
@Alias("user")
三种方法选择:第一种可以自定义别名,第二种则不行,如果非要使用第二种还要自定义别名的话要使用注解
5、settings(设置) 比较重要的设置:
文章图片
文章图片
6、mappers(映射器) 每一个Mapper.xml都需要在Mybatis核心配置文件中注册,有三种注册Mapper方法:
方法一:推荐方法!
方法二:使用class文件
方法三:使用扫描包
方法二和方法三注意点:
- 接口和其Mapper配置文件必须同名
- 接口和其Mapper配置文件必须在同一个包下
- typeHandlers(类型处理器)
- objectFactor(对象工厂)
- plugins(插件)
- mybatis-generator-core
- mybatis-plus
- 通用mapper
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MFQjXlmR-1597330009594)(Mybatis学习笔记.assets/image-20200528115331373.png)]
生命周期和作用域是至关重要的,因为错误的使用会导致非常严重的并发问题
SqlSessionFactoryBuilder:
- 生命周期:一旦创建了SqlSessionFactory就不再需要
- 作用域:局部变量
- 作用:可以简单理解为数据库连接池
- 生命周期:一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃或者重新创建一个实例
- 作用域:应用作用域,最简单的是使用单例模式或者静态单例模式
- 作用:可以理解为连接到连接池的一个请求
- 生命周期:SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。用完之后需要赶紧关闭,否则会占用资源
- 用完之后需要赶紧关闭,
解决方案一:在查询的select语句中给原来的字段起别名,过于简单粗暴
select id,name,pwd as password from mybatis.user where id=#{id}
解决方案二:使用ResultMap
ResultMap特点:
- 是 MyBatis 中最重要最强大的元素
- 设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了
- 最优秀的地方在于,即使对它已经相当了解,但是根本就不需要显示地用到它们
id="getUserById" parameterType="int" resultMap="UserMap">
select * from mybatis.user where id=#{id}
推荐阅读
- mybatis|mybatis plus使用雪花算法_MyBatis-Plus笔记
- Java_web|Java-web案例(mybatis、maven、jsp、tomcat、servlet...)
- #|JDBC 与 Java数据库访问体系 重点归纳
- #|【路径优化】基于改进的RRT算法的全局路径规划(Matlab代码实现)
- Leetcode 55 - 跳跃游戏
- spring|springboot+mybais+mabatisplus(swagger)实现增删改查接口
- 框架|MyBatis框架——快速入门第二篇
- JAVA EE企业级应用开发教程章7-8章
- python|OpenCV中图像形态学操作