一.创建SpringBoot项目
创建新项目需要添加的依赖
当然如果是以前的项目也可以直接在pom.xml文件中添加依赖:
MySQL Driver依赖
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
Mybatis Frameworl依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
还有第二种方式导入依赖
>pom.xml文件里面
>右击generate >Edit Starters
>勾选对应的依赖,点击OK即可.
二.Mybatis
Mybatis的写法有两种
1.xml
2.注解
步骤
1.引入Mybatis依赖 引入对应数据库的依赖,比如mysql
2.配置数据库的相关信息
3.定义Java对象
4.写实现
企业建表规约
参考阿里建表规约
1.字段名/表名 全部小写
2.表必备三字段
id
gmt_create创建时间
gmt_modifies修改时间
3.逻辑删除和物理删除
逻辑删除:指从逻辑上进行数据删除
物理删除:从硬盘上进行数据删除 delete
单元测试
在需要写单元测试的类中,右键点击generate,选择Test
配置mybatis相关日志
#指定mybatis输出⽇志的位置, 输出控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
建议只出现在开发环境中,不要出现在线上环境
日志的打印,也是影响性能的 ;
灰度发布:是指发布环境 . 比如发布环境有200台,发布的时候是一批一批的发布 .
通常在刚开始的时候发布1台,也就是观察一段时间后,如果没有问题,继续下一批.
传递参数
如果只有一个参数, sql的名称可以是任意的.
三.注解方式
1.添加
//设置返回自增id
@Options(useGeneratedKeys = true,keyProperty = "id")
@Insert("insert into userinfo (username,password,age,gender,phone)"+
"values(#{username},#{password},#{age},#{gender},#{phone})")
Integer insert(UserInfo userInfo);
2.删除
@Select("select * from userinfo")
List<UserInfo> selectAll();
3.修改
@Update("update userinfo set age=#{age} where id=#{id}")
Integer update(UserInfo userInfo);
4.查询
@Select("select * from userinfo")
List<UserInfo> selectAll2();
结果映射
Mybatis会自动的根据数据库的字段名和Java对象的属性名,进行映射,如果名称一样就进行赋值
注解方式有3种方式进行结果映射
4.1对mysql的字段进行重命名
4.2使用注解的方式
用@Results注解映射 , 再用@ResultMap注解复用映射
4.3配置的方式
在配置文件中配置已以下内容,mysql字段就会完成自动转驼峰
注意:注解和xml方式是可以共存的
四.xml方式
xml的方式比注解方式稍微复杂一点,分为以下三步 :
1.配置数据库
和注解方式一样
2.指明xml的路径
在配置文件中指明xml的路径,写入以下内容
# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件 mapper:
mybatis.mapper-locations: classpath:mapper/**Mapper.xml
注意:路径名是程序员自定义的
3.写xml的实现
这是一个例子:
接口的定义
实现
xml文件配置SQL , 下面是模板
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
//namespace更改成具体要要构造mapper类的全限定路径
<mapper namespace="com.example.mybatisforbit.mapper.UserInfoXMLMapper">
</mapper>
结果类型就是返回的类型,不管返回的是对象还是list,此处定义的都是返回的数据的类型,比如这里返回的是UserInfo类型的数据.
namespace表示要实现哪个接口,要写全限定类名.
3.1添加
实现
重命名
3.2删除
3.3修改
3.4查询
结果映射
回忆注解方式中结果映射的三种解决方法
1.给sql字段起别名
2.@Result注解
3.配置自动转驼峰
mybatis.configuration.map-underscore-to-camel-case:true#配置驼峰⾃动转换
xml的结果映射 1和3 方式都是可以的.
除此之外还有一种与@Results相似的方式: 利用<resultMap>标签来进行数据库字段名和类属性的映射.