公众号merlinsea
mybatis plus的介绍
- 官⽹ https://baomidou.com/
- 是⼀个 Mybatis 的增强⼯具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提⾼效率⽽⽣。
- 是怎么增强的呢?mybatis plus已经封装好了⼀些crud⽅法,我们不需要再像mybatis这样编写xml了,直接调⽤这些⽅法就⾏,类似JPA但优于JPA。
第一步:准备工作
1、pom文件中引入依赖【数据库依赖和mybatis plus依赖】
<!--引入数据库依赖--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency> <!--mybatis plus和springboot整合--><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version></dependency>
2、在application.properties中添加数据库连接信息
【核心是 :数据库连接驱动+地址+库名+账号+密码】
#==============================数据库相关配置========================================spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/shop?useUnicode=true&characterEncoding=utf-8&useSSL=falsespring.datasource.username =rootspring.datasource.password =mysqlroot #配置mybatis plus打印sql日志mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
3、启动类上添加 @MapperScan("org.example.shopmanager.mapper")
@SpringBootApplication//org.example.shopmanager.mapper用于存放数据库表的实体类的包@MapperScan("org.example.shopmanager.mapper")public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
第二步、编写model-mapper-service-controller层
1、model层【对应数据库表的DO实体类】
注释:通过配置文件引入了数据库shop,配合mybatis plus 的TableName(),得出BannerDO类映射到shop数据库下的banner表。
/** * @TableName 表示这个实体类映射数据库中的表名 **/ @Data @TableName("banner")//表名映射 public class BannerDO { private Integer id; private String img; private String url; private Integer weight; }
2、mapper层【数据库访问层】
注释:
- 接口,反射的方式调用,继承BaseMapper<BannerDO>,BaseMapper<BannerDO>中提供了很多数据库的增删改查方法,直接调用即可
- mapper层可以不加@Mapper注解,因为启动类上加了@MapperScan("org.example.shopmanager.mapper")包扫描路径,如果启动类没加
mapper包扫描路径,则需要在mapper层添加@Mapper注解。
/** * BannerMapper需要继承BaseMapper<BannerDO>接口 */ public interface BannerMapper extends BaseMapper<BannerDO> { }
3、service层【业务逻辑层】
注释:通过java反射技术持有mapper数据库访问层的对象,然后执行业务操作。
/** * list列出所有的Banner轮播图 **/ @Service public class BannerServiceImpl implements BannerService { @Autowired private BannerMapper bannerMapper; //列出所有的BannerDO信息 @Override public List<BannerDO> list() { return bannerMapper.selectList(new QueryWrapper<>()); } }
4、controller层【提供外界访问】
@RestController @RequestMapping("api/v1/banner") public class BannerController { @Autowired private BannerService bannerService; @RequestMapping("list") public JsonData list(){ List<BannerDO> list = bannerService.list(); return JsonData.buildSuccess(list); } }
在外界浏览器中输入:http://localhost:8080/api/v1/banner/list 触发整个链路