基本配置:
新建一个spring Initializer项目,加入spring web ,jdbc api,Mysql driver三个基本依赖创建好项目后,在pm.xml文件中加入下面的两个依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
编写properties文件配置:
server.port=8088
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
Mybatisplus使用:
1.配置完成之后,编写实体类,我这里要进行操作的表是user表,数据如下:
实体类编写如下:
package com.example.mybatisplusdemo.entity;
import lombok.Data;
@Data
public class User {
private Integer id;
private String username;
private String pwd;
public User() {
}
public User(Integer id, String username, String pwd) {
this.id = id;
this.username = username;
this.pwd = pwd;
}
}
常用的几个注解:
@Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法
@AllArgsConstructor : 注在类上,提供类的全参构造
@NoArgsConstructor : 注在类上,提供类的无参构造
@Setter : 注在属性上,提供 set 方法
@Getter : 注在属性上,提供 get 方法
@EqualsAndHashCode : 注在类上,提供对应的 equals 和 hashCode 方法
@Log4j/@Slf4j : 注在类上,提供对应的 Logger 对象,变量名为 log
2.编写UserMapper接口:
package com.example.mybatisplusdemo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisplusdemo.entity.User;
public interface UserMapper extends BaseMapper<User> {
}
这里就是要继承BaseMapper,<>里的是你的实体类的名字。
3.给启动类加上Mapper扫描,即添加@MapperScan
package com.example.mybatisplusdemo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.example.mybatisplusdemo.mapper")
@SpringBootApplication
public class MybatisplusDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisplusDemoApplication.class, args);
}
}
4.测试功能
insert:
@Test
public void test3(){
int i = userMapper.insert(new User(6, "888", "ooo"));
//insert方法的返回值int,表示的是数据插入成功的行数,
}
插入成功
update:
updateById方法:
@Test
public void test4(){
User user = new User();
user.setUsername("ppp");
user.setPwd("er0");
user.setId(2);
int i = userMapper.updateById(user);
}
修改成功
delete:
deleteById方法:根据主键来删除一条数据
@Test
public void test6(){
int i = userMapper.deleteById(3);
//i是deleteById之后影响的行数
System.out.println(i);
}
删除成功
deleteByMap方法:
@Test
public void test7(){
HashMap<String , Object> map = new HashMap<>();
map.put("username","ppp");
map.put("pwd","er0");
int i = userMapper.deleteByMap(map);
System.out.println(i);
}
删除成功
@Test
public void test7(){
HashMap<String , Object> map = new HashMap<>();
map.put("username","uuu");
map.put("pwd","ppp");
int i = userMapper.deleteByMap(map);
System.out.println(i);
}
成功删除两条记录
deleteBatchIds方法:批量删除,作用类似于sql语句中的in
@Test
public void test8(){
ArrayList<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(6);
ids.add(8);
ids.add(10);
//使用lambda表达式创建List集合
//List<Integer> ids = Stream.of(1, 6, 8, 10).collect(Collectors.toList());
int i = userMapper.deleteBatchIds(ids);
System.out.println(i);
}
删除成功
select:
selectById:根据主键值查询,如果根据主键没有查询到数据,得到的返回值就是null。
@Test
public void test9(){
User user = userMapper.selectById(5);
System.out.println(user);
}
查询成功
selectBatchIds方法:
@Test
public void test10(){
ArrayList<Integer> list = new ArrayList<>();
list.add(5);
list.add(6);
list.add(7);
//lambda表达式
//List<Integer> list = Stream.of(5, 6, 7).collect(Collectors.toList());
List<User> users = userMapper.selectBatchIds(list);
for (User u :
users) {
System.out.println(u);
}
}
查询成功
selectByMap方法:
@Test
public void test11(){
HashMap<String, Object> map = new HashMap<>();
map.put("username","sss");
List<User> users = userMapper.selectByMap(map);
for (User u :
users) {
System.out.println(u);
}
}
查询成功