-
ssm-mybatis进阶
简介
ssm-mybatis入门后,理解一下进阶概念,从mybatis配置和sql映射器两大方向探索。config配置文件
configuration配置比较多,这里选一些常用的配置来举例。需要注意的是,配置项必须按照规定的顺序进行配置,否则会出现匹配错误:






MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。 例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。 不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。 所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。


- 属性(properties):属性可以在外部进行配置,并可以进行动态替换。 在resources目录下创建db.properties配置文件,并配置数据库连接参数:
-
类型别名(typeAliases):类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
- typeAlias: 为单个Java类设置别名
- package: 为包名下的所有类设置别名,默认为其类名对应小写
设置完别名后,在映射文件中进行配置: - 环境配置(environments):
- 映射器(mappers): 映射器主要用来告诉mybatis去哪里找sql语句的。mapper有四种配置方法,其中用包名的形式个人觉得更简单,但是性能可能会差一些
在mybatis-config.xml配置文件中,用引入外部properties方式,配置db连接参数,使用符号:${}
上图方式一和方式二还可以混合使用,如果同一属性都有配置方式一会覆盖方式二属性。验证可以正确连接到数据库:
验证可以正确连接到数据库:
mapper映射文件
MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。 如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。
public interface UserMapper {
...
User getById(int id);
...
}















出处:https://www.cnblogs.com/zhoux123/p/15133931.html
- select: 最常用的sql语句,下面看几个简单例子 首先在UserMapper中,增加一个接口:
-
- 示例一:
- 示例二:
sql中直接使用字段别名映射到POJO对象属性。
使用resultMap对将数据库字段名映射到POJO对象属性,resultMap和resultType只能二选一不能同时使用。查询返回数据除了用pojo接收,还可以用map接收,map可以说是万能的,特别是在字段较多的复杂场景,优势很明显。
-
- 示例三:
增加接口: - insertinsert,update 和 delete 的实现非常相似,下面举例说明 增加接口:
- update: 增加接口:
- delete: 增加接口:void delete(int id);
编写映射:
编写测试:
查看结果:
编写映射:pojo和map都可以插入,map更加灵活
编写测试:记得commit才生效
查看结果:两种方式都正确写入数据
编写映射:pojo和map都可以,map更加灵活
编写测试:记得commit才生效
查看结果:
编写映射:
编写测试:记得commit才生效
查看结果:
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比