MyBatis
MyBatis基础步骤
准备工作:
创建SpringBoot工程,引入MyBatis相关依赖(MySQL Driver、MyBatis Framework)
准备数据库表、实体类
配置MyBatis(
application.properties
中配置数据库连接信息)1
2
3
4
5
6spring.datasource.url=jdbc:mysql://localhost:3306/web
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=1234
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
编写MyBatis程序:编写持久层接口,定义SQL(通过注解、XML的方式)
以SELECT语句为例:
1
2
3
4
5
public interface UserMapper {
public List<User> findAll(){}
}测试程序:
1
2
3
4
5
6
7
8
9
10
11
12// SpringBoot单元测试注解,当前测试类中测试方法运行是,会启动SpringBoot项目
class SpringbootMybatisQuickstartApplicationTests {
private UserMapper userMapper;
public void testFindAll() {
List<User> users = userMapper.findAll();
users.forEach(System.out::println);
}
}
数据库连接池
数据库连接池为容器,负责分配、管理数据库连接。允许应用程序重复使用一个现有的数据库连接,而不是重写建立一个。同时会释放空闲时间超过最大空闲时间的连接,避免连接遗漏。
切换DataSource:
1 | springboot.datasource.type=com.alibaba.druid.pool.DruidDataSource |
删除语句
#{...}
占位符,执行时会替换为?
,生成预编译SQL,并将输入传递进去。
1 | /** |
添加语句
传入参数为一个类对象,Insert注解根据占位符内容读取对象内的属性。
1 | /** |
更新语句
与添加语句类似。
1 | /** |
查询语句
编译后字节码文件中不会保存传入参数名称,需要使用@Param
声明。基于Springboot官方骨架创建的项目(pom.xml
中指定了springboot父工程),接口编译时会保留形参名,可以省略。
1 | /** |
XML映射配置
规则:
- XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下。
- XML映射文件的namespace属性为Mapper接口全限定名一致。
- XML映射文件中sql语句的id与Mapper接口中的方法名、返回类型一致。
com.example.mapper.UserMapper
Mapper接口:
1 |
|
对应的XML映射文件resources/com/example/mapper/UserMapper.xml
:
1 | <mapper namespace="com.example.mapper.UserMapper"> |
在application.properties
中配置XML映射文件位置:
1 | mybatis.mapper-locations=classpath:mapper/*.xml |
动态SQL:可以根据请求的参数动态修改SQL语句
1 | <mapper namespace="com.example.mapper.UserMapper"> |
指定封装信息
如果查询返回的字段名与属性名不对应或比较复杂,则使用resultMap
替代resultType
进行指定。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Eternity's Blog!