用springboot配置了mybatis-plus,定义了map层的代码,并且调用了map对象实现了查询的操作。
按照三层架构的逻辑,应该用service层调用map层,写来写去还是这几个通用的操作,有什么好办法能不让咱自己写呢?
mybatis-plus提供了通用接口和实现类,只需要继承和实现,就可以实现大多数对数据库表的持久化操作。
那如何用service层。
首先咱service层创建User service接口。
右键 新建 UserService,
然后就得到UserService.java文件在service文件夹下面:
package com.example.demo.service;
public interface UserService {
}
然后他需要去继承那个IServeice接口:
package com.example.demo.service;
public interface UserService extends IServece<User> {
}
导包,把鼠标放到IService 和 User单词上,然后回车就得到:
package com.example.demo.service;
import com.baomidou.mybatisplus.extension.service.IService;
public interface UserService extends IServece<User> {
}
泛型传实体类,就是这个接口需要对哪个实体类进行增删改查。
接着还要创建实现类。
先在这个service里面创建IMPL的实现包。
右键service,新建com.example.demo.service.impl,这样子就是创建UserService的实现类。然后在impl创建UserServiceImpl:
// UserServiceImpl.java
package com.example.demo.service.impl;
public class UserServiceImpl {
}
在类上添加Service注解:
// UserServiceImpl.java
package com.example.demo.service.impl;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl {
}
然后当Springboot启动后,就会实例化这个实现类的对象,如果想在spingboot中注入这个service对象,就需要在这个实现类上面添加这个service的注解。
已经学会了两种注入对象的方式了,一种是通过那个control注解,还有一个是通过这个service注解。但是这两种注入方式具有条件,他们只适合在特定的情况下注入对象。
如何把自己的对象注入到springboot上面。
这个实现类需要实现一个接口:
// UserServiceImpl.java
package com.example.demo.service.impl;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
}
爆红之后:
然后把这些要实现的方法给他展示出来。
这要是自己一个个写太费劲了,不想写,mybatis-plus给出了实现方法,可以继承通用的实现类,传入实体和map的泛型,就把这个接口的方法给实现了。
所以把刚刚展示的方法给去掉。撤回去。
然后继承通用的实现类,
// UserServiceImpl.java
package com.example.demo.service.impl;
import com.baomidou.mybatisplus.extension.servie.impl.ServiceImpl;
import com.example.demo.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
传入两个泛型,它里面有哪些方法。可以打开mybatis-plus官网看一下。baomidou.com/guides/data-interface/#save
看看。
看一下有保存、保存或修改、删除等等。主要是一些增删改查的操作。主要是一些增删改查的操作。
list
// 查询所有
List<T> list();
用这个查询出所有的user对象。
创建测试方法,在测试类里面先注入service对象。
在测试类里面先注入
service对象。
用resource注解,
@SpringBootTest
class DemoApplicationTests {
@Resource
private UserMapper userMapper;
@Resource
private UserService userService;
@Test
void contextLoads() {
System.out.println(("----- selectAll method test -----"));
List<User> userList = userMapper.selectList(queryWrapper: null);
Assert.isTrue(expression: 5 == userList.size(), message: "");
userList.forEach(System.out::println);
}
@Test
void contextService() {
List<User> userList = userService.list();
userLIst.forEach(System.out::println);
}
}
userService.list();用这个方法list去进行接收。