首先可以给大家推荐一下MyBatis-Plus的官网:简介 | MyBatis-Plus (baomidou.com)https://baomidou.com/pages/24112f/一、新建一个项目:
然后就可以自动生成pom.xml里面的依赖。如果依赖不够,需要其他的依赖,可参考以下依赖代码:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--代码生成器-->
<dependency><!-- mybatis-plus代码生成器 -->
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!-- 模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!--阿里巴巴数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
二、在resources中创建yml文件。
注意application.yml文件前面的图标形状像叶子,如果不是就要改变。
在yml文件中写数据(以下代码只是举例) :
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://demo1?serverTimezone=Asia/Shanghai&characterEncoding=utf-8
password: 123456
username: root
main:
banner-mode: off # 关闭SpringBoot启动图标(banner)
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL到控制台
global-config:
banner: off # 关闭mybatisplus启动图标
注意,在冒号后面需要空一格,代码才能正常使用。上面的代码,第一个带入的是数据库,需要修改成自己的数据库名称和密码。
三、基于MyBatis实现数据的增删改查:
1、删除的五种方法
(1)、根据主键id删除数据(直接传id)
int count = userMapper.deleteById(9L);
System.out.println("删除了:"+ count);
(2)、根据主键id删除数据(传实体类)
User user = new User();
user.setId(8L);
int count = userMapper.deleteById(user);
System.out.println("删除了:"+ count);
(3)、根据主键id批量删除数据
List<Long> ids = new ArrayList<>();
ids.add(1L);
ids.add(2L);
delete from user where id in (1,2);
userMapper.deleteBatchIds(ids);
(4)通过构造wrapper构造器删除
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("name","xiaoming1");
wrapper.eq("age",11);
//
delete from user where (name="xiaoming1" and age = 11);
userMapper.delete(wrapper);
// lambda表达式
userMapper.delete(new QueryWrapper<User>()
.lambda()
.eq(User::getName, "xiaoming1")
.eq(User::getAge,11)
);
(5)、使用map设置条件删除
Map<String, Object> col = new HashMap<>();
col.put("name","xiaoming2");
col.put("age",12);
int count = userMapper.deleteByMap(col);
System.out.println("删除了:" + count);
2、插入数据的三种方法:
(1)、使用mapper层查询数据,在mapper中只封装了insert()方法
User user = new User();
user.setAge(10);
user.setGender(1);
user.setName("xiaoming");
userMapper.insert(user);
Long id = user.getId();
System.out.println("id:" + id);
(2)、伪批量插入:saveBatch()
List<User> userList = new ArrayList<>();
for (int i =1;i<5;i++){
User user1 = new User();
user1.setAge(10+ i);
user1.setGender(1 + i);
user1.setName("xiaoming" + i);
userList.add(user1);
}
boolean isSuccess = userService.saveBatch(userList);
Long id = user.getId();
System.out.println("返回结果:"+isSuccess );
(3)、批量保存或者更新
List<User> userList = new ArrayList<>();
for (int i =3;i<10;i++){
User user1 = new User();
user1.setAge(10+ i);
user1.setGender(1 + i);
user1.setName("xiaoming" + i);
userList.add(user1);
}
boolean isSuccess = userService.saveOrUpdateBatch(userList);
System.out.println("返回结果:"+isSuccess );
3、修改(更新)数据:
// mapper层
User user = User.builder()
.name("xiaoxiaoming")
.id(5L)
.gender(0)
.build();
int count = userMapper.updateById(user);
System.out.println("更新了:" + count);
// 通过wrapper进行更新
User user = User.builder().name("hahah").gender(0).build();
UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
userUpdateWrapper.eq("age",13);
int count = userMapper.update(user,userUpdateWrapper);
// service层
UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
userUpdateWrapper.set("name","xixix");
userUpdateWrapper.eq("id",5L).eq("age",13);
userService.update(userUpdateWrapper);
4、查询数据的
(1)、mapper层,根据 id查询数据
User user = userMapper.selectById(5L);
System.out.println(user.toString());
(2)、通过构造wrapper条件查询一条数据
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 设置查询字段;仅查询name id字段
queryWrapper.select("id","name");
// 添加查询条件
queryWrapper.eq("id",6L);
User user1 = userMapper.selectOne(queryWrapper);
System.out.println(user1.toString());
(3)、根据id批量查询
List<User> userList = userMapper.selectBatchIds(Arrays.asList(5L,6L,7L));
(4)、通过Wrapper组装查询条件,查询全部数据
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//设置查询字段;仅查询name id字段
queryWrapper.select("id","name");
// 添加查询条件
queryWrapper.eq("age",30);
List<User> users = userMapper.selectList(queryWrapper); // 查询全部数据
(5)、根据columnMap设置查询条件
Map<String,Object> colMap = new HashMap<>();
colMap.put("name","xixix");
colMap.put("age",13);
select * from user where name="xixix" and age=13;
List<User> userList1 = userMapper.selectByMap(colMap); // 使用map构造查询
(6)根据wrapper条件,查询记录总数
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name","xixi").eq("age",13);
long count = userMapper.selectCount(queryWrapper); // 获取总量
(7)、service层
User user = userService.getById(5L); // 根据id获取数据
// 通过Wrapper条件查询一条数据,当结果出现多条数据是会抛出异常
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name","xixi").eq("id",5L);
// select * from user where id= 5 and name = "xixi"
User user1 = userService.getOne(queryWrapper);
(8)、通过list开头的方法来查询多条数据
// 条件查询
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name","xixi").eq("id",5L);
//select * from user where id= 5 and name = "xixi"
List<User> users = userService.list(queryWrapper);
// 根据id列表查询数据
//select * from user where id in(5,6)
List<User> userList = userService.listByIds(Arrays.asList(5L,6L));
// 通过map构造查询条件
Map<String,Object> cloMap = new HashMap<>();
cloMap.put("name","xixi");
cloMap.put("age",13);
//select * from user where age= 5 and name = "xixi"
List<User> userList1 = userService.listByMap(cloMap);
(9)、获取查询总数
QueryWrapper<User> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("name","xixi").eq("id",5L);
userService.count(queryWrapper1); // 获取插叙总数