为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【】。
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
代码如下(示例):
Drop database if EXISTS mybatisplus_db;
CREATE SCHEMA `mybatisplus_db` DEFAULT CHARACTER SET utf8mb4;
use `mybatisplus_db`;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(20),
`password` varchar(50) ,
`age` int(10) ,
`tel` varchar(255) ,
PRIMARY KEY (`id`)
);
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'tom', 'tom', 3 , '188666888');
INSERT INTO `user` VALUES (2, 'jerry', 'jerry', 4 , '166888666');
INSERT INTO `user` VALUES (3, 'jock', '123456', 41 , '400618400');
INSERT INTO `user` VALUES (4, '传智播客', 'itcast', 23 , '400617500');
效果如下:
(此处只是示例,具体命名根据自己情况决定,操作步骤如图)
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
//数据库名称示例:mybatisplus_db
url: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC
//用户名示例:root
username: root
//用户密码示例:root
password: root
(一定要注意文件之间的层级关系,搞错了可能导致无法自动装配bean等问题)
//lombok
//@Data 注解的主要作用是提高代码的简洁,
// 使用这个注解可以省去代码中大量的get()、 set()、 toString()等方法(这些通用方法可以一键生成);
//要使用 @Data 注解要先引入lombok,它是一个工具类库,可以用简单的注解形式来简化代码,提高开发效率。
@Data
public class User {
private Long id;
private String name;
private String password;
private Integer age;
private String tel;
}
//继承BaseMapper接口,泛型填写实体类名称
@Mapper
public interface UserDao extends BaseMapper<User> {
}
@SpringBootTest
class DlMpApplicationTests {
//将Userdao接口装配bean到IOC容器
@Autowired
private UserDao userDao;
//查询全部
@Test
void testGetAll() {
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
}
【】
Service CRUD 返回的boolean的值,Mapper CRUD 返回的是int值
Mapper简化了单表的sql操作步骤(CRUD),而Serivce则是对Mapper的功能增强,比如Service 还提供了一些批量方法(批量插入、批量更新数据),这是 Mapper 没有的
在运用CRUD上两者区别不大,Service以业务功能为主,更加复杂(底层)的SQL查询还是要靠Mapper去编写SQL语句
为了避免混淆,Service 与 Mapper 的 CRUD 方法前缀有所区别:
(在入门案例的测试类上进行编码)
@Test
void testSave(){
User user = new User();
user.setId(12L);
user.setName("黑马程序员");
user.setAge(12);
user.setPassword("itheima");
user.setTel("400418400");
//实现增加操作的Mapper CRUD接口: int insert(T entity);
userDao.insert(user);
}
@Test
void testDelete(){
//实现删除操作的Mapper CRUD接口: int deleteById(Serializable id);
userDao.deleteById(12L);
}
@Test
void testUpdate(){
User user = new User();
user.setId(1L);
user.setName("Tom666");
user.setPassword("tom888");
// 实现修改操作的Mapper CRUD接口: int updateById(@Param(Constants.ENTITY) T entity);;
userDao.updateById(user);
}
(上面的入门案例做过)
@Test
void testGetAll() {
//实现了Mapper CRUD 的 selectList 接口,根据 entity 条件,查询全部记录
//List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper)
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
@Test
void testGetById(){
// 实现了Mapper CRUD的selectById接口,根据 ID 查询
// T selectById(Serializable id);
User user = userDao.selectById(1L);
System.out.println(user);
}
@Configuration
public class MpConfig {
@Bean
public MybatisPlusInterceptor mpInterceptor(){
//1.定义Mp拦截器
MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
//2.添加具体的拦截器
mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mpInterceptor;
}
}
//分页查询
//ctrl + H 查看类的继承关系
//ctrl + 鼠标左键 查看源码
//Alt + 7 查看类中的所有方法列表
@Test
void testGetPage(){
//current : 1 代表当前查第几页,size : 2 代表每页有多少条
IPage page = new Page(1, 2);
// 实现Mapper CRUD中的selectPage接口,根据 entity 条件,查询全部记录(并翻页)
//IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
userDao.selectPage(page, null);
System.out.println("当前页码值:" + page.getCurrent());
System.out.println("每页显示数:" + page.getSize());
System.out.println("一共多少页:" + page.getPages());
System.out.println("一共多少条数据:" + page.getTotal());
System.out.println("数据:" + page.getRecords());
}
欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)