1.mybatis简介
mybatis 前身叫iBatis是Apache的一个开源框架,2010改名为mybatis。 是一个持久层 orm 框架,支持定制化sql、存储过程高级映射等。
2. sql脚本准备
CREATE TABLE `sys_user` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '系统用户id',
`user_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
`create_dt` datetime NOT NULL COMMENT '修改时间',
`modify_dt` datetime NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户表';
3. 新建springboot项目
可自行 某度一下
4.mybatis 使用方式
4.1 接口代理(常用)
这种方式一般是配合 spring 或 springboot 使用,此处介绍springboot配合使用。
4.1.1 引入jar包
<!-- springboot web项目 不引入此包,否则容器无法正常启动 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 阿里数据库连接池 -->
<!--sql-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 整合 mybatis 使用 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<!-- lombok 好用的 插件,生成getter setter ,equals 等方法和日志变量 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
4.1.2 后缀 yml 文件配置
spring:
# spring 管理连接池
datasource:
druid:
# 换成自己的连接
url: jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# 用户名
username: root
# 密码
password: root
# 驱动
driver-class-name: com.mysql.cj.jdbc.Driver
# 最大活跃连接
max-active: 120
initial-size: 30
min-idle: 15
mybatis:
# typeAliasesPackage 或 type-aliases-package 配置mapper 映射实体位置
typeAliasesPackage: com.example.demo.dao.**
# mapper-locations 本地mapper文件位置 mapperLocations
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 指定配置文件 configLocation: classpath:mybatis/mybatis-config.xml
configuration:
# 下划线转驼峰
map-underscore-to-camel-case: true
# 日志
logImpl: org.apache.ibatis.logging.stdout.StdOutImpl
4.1.3 新建mapper文件和 对应的类
目录结构如下
SysUserMapper.java文件代码
SysUserMapper.xml文件代码
SysUserServiceImpl 代码截图,直接注入 mapper 接口即可
SysuserController截图
到此就配置完了,直接启动项目即可执行
访问路径 为(默认端口8080): localhost:8080/sysUser/list
下面为结果截图:
其它api:
// 返回实体
<T> T selectOne(String statement, Object parameter)
// 返回列表
<E> List<E> selectList(String statement, Object parameter)
// 类似游标的功能,数据量比较大的时候,可以不用一次性拿出所有数据,节省内存
<T> Cursor<T> selectCursor(String statement, Object parameter)
// 返回map
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey)
int insert(String statement, Object parameter)
int update(String statement, Object parameter)
int delete(String statement, Object parameter)
/*
高级使用:
它们允许你限制返回行数的范围,
或是提供自定义结果处理逻辑,
通常在数据集非常庞大的情形下使用。
*/
<E> List<E> selectList (String statement, Object parameter, RowBounds rowBounds)
<T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds)
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowbounds)
void select (String statement, Object parameter, ResultHandler<T> handler)
void select (String statement, Object parameter, RowBounds rowBounds, ResultHandler<T> handler)
4.2 sqlSession执行对应语句 + nameSpace + 方法名称
在一的基础上,修改serviceImpl代码
查看结果
4.3 基于mapper 文件注解
修改后的serviceImpl 截图
mapper 截图
其它注解:
@Insert
@Update
@Delete
@Select
/* 每个注解分别代表将会被执行的 SQL 语句。它们用字符串数组(或单个字符串)作为参数。
如果传递的是字符串数组,字符串数组会被连接成单个完整的字符串,每个字符串之间加入一个空格。*/
@InsertProvider
@UpdateProvider
@DeleteProvider
@SelectProvider
/*
动态sql Java 代码里构建 SQL 语句
*/
说明
mybatis的使用形式可以有多种,如spring + mybatis,xml方式配置,javaBean方式配置数据源等。此文章为方便,采用的是开箱即用的springboot + mybatis 实现。
代码连接:https://download.csdn.net/download/m0_46861007/85219806