简介
什么是 MyBatis?
官网地址:MyBatis中文网
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
什么是 MyBatisPlus?
官网地址:MyBatis-Plus (baomidou.com)
myBtiasPlus是一个 myBtiasPlus的增强工具,在myBtiasPlus的基础上只做增强不做改变,为简化开发、提高效率而生。大家需要注意的是它只是一个工具,大家需要掌握和重点学习的依然是myBtiasPlus,在熟练掌握基础的情况下使用myBtiasPlus会达到事半功倍的效果。
下面开始进行实操
这里简单介绍一下项目结构
- controller :控制层,主要编写一些对外的访问接口
- mapper:mapper也别名为dao层,主要编写一些sql接口,操作数据库
- pojo:实体层,主要是编写一些实体类,对应的是数据库的表以及字段属性
- result:统一响应,对所有返回的数据做一个统一格式的封装
- service:编写一些service接口,编写业务的具体的逻辑操作
- utils:编写一些工具类,如何时间格式化工具或jwt令牌的生成等
----------------------------------------------------------------------------------------------一、mybtias 的使用
1、引入依赖
- mysql驱动
- mybatis启动依赖
<!-- mysql驱动-->
<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.1.1</version>
</dependency>
2、在yaml文件中配置 mysql连接,以及 配置 sql逻辑xml文件的映射路径
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/webdb?serverTimezone=UTC&allowPublicKeyRetrieval=true
username: root
password: 123456
mybatis:
#定义别名包,这是你项目的包名
type-aliases-package: cn.bxshey.modules_user.pojo
#导入映射文件,在resources目录下新建文件夹mappers,在其编写xml文件即可
mapper-locations: classpath:/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
3、在mapper文件夹也就是dao层编写mapper接口
package cn.bxshey.web.mapper;
import org.apache.ibatis.annotations.Mapper;
import cn.bxshey.web.pojo.domain.User;
@Mapper
public interface UserMapper{
//查询所有
List<User> getAll();
}
4、在映射的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">
<mapper namespace="cn.bxshey.web.mapper.UserMapper">
<!--查询所有-->
<select id="getAll" resultType="cn.bxshey.web.pojo.domain.User">
select * from user
</select>
</mapper>
5、业务层,这里省略了业务接口,直接编写的业务类
@Service
public class BaseUrlServiceImpl implements BaseUrlService {
@Autowired
UserMapper userMapper;
@Override
public List<User >getAll() {
return userMapper.getAll();
}
}
6、控制层中调用
@RestController
@RequestMapping("/weburl/user")
public class UserController {
@Autowired
UserService userService;
@PostMapping("/get")
public Result<List<User>> getAll() {
return Result.success(userService.getAll());
}
}
-------------------------------------------------------------------------------------------------------------------二、mybatisPlus
1、引入依赖
- mybatisPlus的依赖
- mysql驱动连接
<!-- 需要手动添加的mybatisPlus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
2、在mapper件夹也编写mapper接口
package cn.bxshey.web.mapper;
import cn.bxshey.web.pojo.domain.BaseUrl;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import cn.bxshey.web.pojo.domain.BaseUrl;
@Mapper
public interface BaseUrlMapper extends BaseMapper<BaseUrl> {
}
3、编写的业务接口
import com.baomidou.mybatisplus.extension.service.IService;
import cn.bxshey.web.pojo.domain.BaseUrl;
public interface BaseUrlService extends IService<BaseUrl> {
List<User> getAll();
}
4、编写的业务接口实现类
package cn.bxshey.web.service.impl;
import cn.bxshey.web.mapper.BaseUrlMapper;
import cn.bxshey.web.pojo.domain.BaseUrl;
import cn.bxshey.web.service.BaseUrlService;
import com.baomidou.mybatisplus.core.conditions.update.LambdaWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class BaseUrlServiceImpl extends ServiceImpl<BaseUrlMapper, BaseUrl> implements BaseUrlService {
@Autowired
BaseUrlMapper baseUrlMapper;
@Override
public int myUpdateBaseUrl() {
LambdaWrapper<BaseUrl> wrapper = new LambdaWrapper<>();
wrapper.eq(BaseUrl::getMainPage,baseUrl.getMainPage());
return baseUrlMapper.selectList(wrapper);
}
}
5、在控制层调用
@RestController
@RequestMapping("/weburl/baseurl")
public class BaseController {
@Autowired
BaseUrlService baseUrlService;
//更新基础页面
@PutMapping("/update")
public Result<?> updateBaseUrl(@RequestBody BaseUrl baseUrl) {
return Result.success("更新基础页面成功!",
baseUrlService.myUpdateBaseUrl(baseUrl));
}
}
使用的注解如下:
- @service注解,表明这是一个业务类的bean
- @mapper接口,将接口生成一个动态代理类
- @RestConteroller注解,表明该返回的数据是Json类型的
-
@RequestMapping注解,给请求访问的路径添加一个统一的请求访问头
以上就是mybatis 以及mybatis Plus的基本使用演示
提示:可能有些包名的代码我没有复制完全!
--------------------------------------------------------------------------------------------------------------------------------
下面对比一下,本人所认为的他们之间的一下异同点
mybatis | mybatisPlus | |
是否能多表联查 | 可以 | 否 |
代码简易程度(看起来) | 一般 | 简易 |
是否支持分页 | 支持 | 支持 |
是否支持动态SQL | 支持 | 支持 |
是否内置基本方法 | 否 | 基本增删改查都有 |
最后声明,以上仅仅作为个人学习使用,是个人学习的心得和总结,欢迎各位大佬批评指正!