网站开发多长时间,阜宁城乡建设局网站,烟台注册公司,网站建设下载模板之后怎么修改文章目录 一. 什么是MyBatis二. MyBatis操作数据库步骤(使用注解)创建工程创建数据库创建对应实体类配置数据库连接字符串写持久层代码单元测试 三. MyBatis基础操作 使用注解打印日志参数传递增删改查 一. 什么是MyBatis 简单来说 MyBatis 是更简单完成程序和数据库交互的框架… 文章目录 一. 什么是MyBatis二. MyBatis操作数据库步骤(使用注解)创建工程创建数据库创建对应实体类配置数据库连接字符串写持久层代码单元测试 三. MyBatis基础操作 使用注解打印日志参数传递增删改查 一. 什么是MyBatis 简单来说 MyBatis 是更简单完成程序和数据库交互的框架也就是更简单的操作和读取数据库⼯具
二. MyBatis操作数据库步骤(使用注解) 创建工程
创建springboot⼯程并导⼊ mybatis的起步依赖、mysql的驱动包 Mybatis 是⼀个持久层框架, 具体的数据存储和数据操作还是在MySQL中操作的, 所以需要添加MySQL驱动
创建数据库
CREATE TABLE userinfo (id int(11) NOT NULL AUTO_INCREMENT,username varchar(127) NOT NULL,password varchar(127) NOT NULL,age tinyint(4) NOT NULL,gender tinyint(4) DEFAULT 0 COMMENT 1-男 2-女 0-默认,phone varchar(15) DEFAULT NULL,delete_flag tinyint(4) DEFAULT 0 COMMENT 0-正常, 1-删除,create_time datetime DEFAULT CURRENT_TIMESTAMP,update_time datetime DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT5 DEFAULT CHARSETutf8mb4;创建对应实体类 配置数据库连接字符串
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncodingutf8useSSLfalseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver修改数据库名称, 密码即可
写持久层代码 Mybatis的持久层接⼝规范⼀般都叫 XxxMapper
Mapper注解表⽰是MyBatis中的Mapper接⼝ 程序运⾏时, 框架会⾃动⽣成接⼝的实现类对象(代理对象)并给交Spring的IOC容器管理
Select注解代表的就是select查询也就是注解对应⽅法的具体实现内容
单元测试 选择想要测试的方法, 就会在Test中对应的文件帮我们创建测试方法
需要我们添加SpringBootTest注解, 该测试类在运行时, 就会自动加载Spring的运行环境通过Autowired这个注解, 注入我们要测试的类, 就可以开始测试了 运行成功
三. MyBatis基础操作 使用注解
打印日志
在Mybatis当中我们可以借助⽇志, 查看到sql语句的执⾏、执⾏传递的参数以及执⾏结果
mybatis:configuration: # 配置打印 MyBatis⽇志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl参数传递
在方法中添加参数, 将方法中的参数, 传给SQL, 在SQL语句中使用**#{ }**来接收 测试:
如果方法形参只有一个参数, 那么#{} 中的属性名可以随便写如果是多个参数, 那么就要求参数名和属性名一致 可以通过Param()设置别名, 来映射到对应的属性名 此时, 只会按照id2来映射, id会失效
增 如果使用Param 想要获取到自增字段: 使用Options(useGeneratedKeys true, keyProperty “id”) 将JDBC的useGeneratedKeys方法拿到的数据库中生成的主键, 赋给keyProperty指定的属性中 测试: 删 改 查 观察日志发现, 数据库将后面字段的数据传回来了, 但是在打印userInfo对象时, 却没有接收到 原因分析: 当⾃动映射查询结果时MyBatis 会获取结果中返回的列名并在 Java 类中查找相同名字的属性忽略 ⼤⼩写。 这意味着如果发现了 ID 列和 id 属性MyBatis 会将列 ID 的值赋给 id 属性 但是由于规范性, 命名的时候, 字段名和属性名 不可能完全一致 ** 办法一: 起别名** 成功接收 ** 办法二: 结果映射** 使用Results({Result(column ..., property ...), Result(column ..., property ...)...})注解, 来映射字段和属性 映射成功 但是每当我们写个sql都需要加上这个映射关系 复用映射关系: 如果其他SQL, 也希望可以复⽤这个映射关系, 可以给这个Results定义⼀个id 其他的sql使用ResultMap注解来复用这个映射关系即可 办法三: 开启驼峰命名 加上配置:
mybatis:configuration: map-underscore-to-camel-case: true #配置驼峰⾃动转换 代码中无需做任何处理 映射成功