MyBatis入门---环境搭建
MyBatis
在SpringBoot的场景下使用MyBatis。
为什么要使用MyBatis?—Dao层的开发,增删改查
传统的操作要写很多重复性代码,存在代码冗余。
1.代替JDBC,减少代码冗余
2.不在Java代码中将SQL语句写死。
如何使用MyBatis? 如何在SpringBoot中使用MyBatis?—环境搭建
1.建库建表
2.创建SpringBoot项目,导入Mysql、MyBatis-start(只要导入其他框架,就导入对应的start)
3.创建实现类
4.Mapper接口:定义了一些抽象方法(进行增删改查的时候其实就是调用这些抽象方法)
5.Mapper映射配置文件—定义了和抽象方法对应的SQL语句
6.配置MyBatis(application.properties、启动类上添加@MapperScanner注解:这个注解能够扫描,扫描到接口就能帮我们实现接口的对象)
7.测试
我们成功创建一次之后,后续的操作:就只需要重复3457上面上。
MyBatis_MyBatisX插件安装
MyBatisX插件能够简化MyBatis的开发,因为Mapper映射配置文件可以通过这个插件生成。
实际操作演示
1.建库建表:
CREATE TABLE `user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`username` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`password` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`age` int(11) NULL DEFAULT NULL,`gender` varchar(6) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`addr` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;INSERT INTO `user` VALUES (1, 'zhangsan', '123', 20, 'male', 'qd');
INSERT INTO `user` VALUES (2, 'lisi', '123', 21, 'male', 'bj');
INSERT INTO `user` VALUES (4, 'tom', '123', 19, 'male', 'nj');
INSERT INTO `user` VALUES (5, 'wangwu', '123', 20, 'male', 'sh');
INSERT INTO `user` VALUES (6, 'weihua', '111', 21, 'female', 'sz');
2.创建SpringBoot项目
创建SpringBoot项目,导入Mysql、MyBatis-start(只要导入其他框架,就导入对应的start)
创建SpringBoot项目:
用到什么就选什么就行
勾选之后我们的项目的配置文件pom.xml里面就直接有mybatis的配置了,然后自己添加上mysql的,刷新maven
3.创建实体类
实体类放在bean包下
package com.situ.bean;import lombok.*;@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class User {//编写User实体类/*** 表示用户的实体类** 属性名和数据库列名对应** 符合JavaBean的规范*/private Long id;private String username;private String password;private Integer age;private String gender;private String addr;//set和get方法//toString方法
}
4.Mapper接口
先写接口,写完接口立刻写接口的配置文件
示例:
package com.situ.mapper;import com.situ.bean.User;import java.util.List;
//mapper接口:dao的接口public interface UserMapper {//方法(功能)1:查询所有:List<User> selectAll();//方法(功能)2:根据主键查询:User selectById(Long id);//List<User> selectById(Long id)这样写不对,list是返回的集合,但是根据主键查询其实就返回一个}
5.Mapper映射配置文件
生成Mapper映射配置文件
该文件放在resources目录下的mapper文件夹下,
他的层次要和Java里面mapper的层次一样。
这样配置里面就不用额外的配置了
复制一下,然后在resources下新建文件夹,名字改成把.改成/即可
接下来生成配置文件:我们安装了MyBatisX插件,那么我们就可以生成
步骤:选到要生成的接口处:
选择生成路径:要选到src下面的main下面的resources下面的具体的mapper下
如下图所示:已经成功创建:
如何生成包含sql语句的标签?在抽象方法上Alt+回车即可。
按住前面的图标能实现跳转。
然后在Mappr配置文件里面写对应的sql语句就行
这样我们就实现了只写sql语句和Java代码来实现。
整合MyBatis所需的配置完成MyBatis的自定义配置
配置application.properties
添加数据库连接池的四大参数以及mybatis配置:(写完这个就连接上数据库了)
server.port=8099
server.servlet.context-path=/test# 配置连接池参数:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456# mybatis配置
# 打印log信息
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 开启驼峰命名法,自动将数据库的命名方式,映射成Java中的命名方式
mybatis.configuration.map-underscore-to-camel-case: true
# 别名:要写实体类的包名:也就是bean包。写了别名可以在mapper.xml里面使用别名
mybatis.type-aliases-package=com.situ.bean
# 配置mapper映射文件所在位置:mapper层次写的相同就不用配置了
# mybatis.mapper-locations=classpath:mapper/*Mapper.xml
在启动类上面添加注解:写全包名
package com.situ;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;import javax.annotation.ManagedBean;@SpringBootApplication
//在启动类上面添加注解:写全包名
@MapperScan(basePackages = "com.situ.mapper")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}
加上这个@MapperScan(basePackages = "全包名")
能自动帮我们生成实现类对象,我们可以直接使用。
6.测试
测试的代码要写在test包下
package com.situ;import com.situ.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class ApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic void test1() {userMapper.selectAll().stream().forEach(System.out::println);}@Testpublic void test2(){userMapper.selectById(1L);}}
运行结果:
注意事项:
1.必须要在启动内上面写上注解@MapperScan(basePackages = "全包名")
:写上对应的全包名
2.注入mapper接口实现类的对象
总结:
Mybatis是用在Dao层,对数据库的增删改查的。
SpringMVC是用在Web层:以前servlet做的事情都交给他去做。是最上层的
Spring/SpringBoot本质就是Spring,是提高Spring效率的。因为SpringBoot在整合其他的框架的时候提供了start,start自带配置。
Mybatis整体的步骤:
1.建库建表
2.创建SpringBoot项目,导入Mysql、MyBatis-start(只要导入其他框架,就导入对应的start)
3.创建实现类
4.Mapper接口:定义了一些抽象方法(进行增删改查的时候其实就是调用这些抽象方法)
5.Mapper映射配置文件—定义了和抽象方法对应的SQL语句
6.配置MyBatis(application.properties、启动类上添加@MapperScanner注解:这个注解能够扫描,扫描到接口就能帮我们实现接口的对象)
7.测试