SpringBoot整合mybatisPlus
依赖
<!-- mybatisPlus 核心库 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
application.yml 配置
# 配置端口 server: port: 8081 spring: # 配置数据源 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatisplues?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC username: root password: 123456 type: com.alibaba.druid.pool.DruidDataSource # mybatis-plus相关配置 mybatis-plus: # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置) # mapper-locations: classpath:mapper/*.xml # 以下配置均有默认值,可以不设置 global-config: db-config: #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID"; id-type: ID_WORKER #字段策略 IGNORED:"忽略判断" NOT_NULL:"非 NULL 判断") NOT_EMPTY:"非空判断" field-strategy: NOT_EMPTY #数据库类型 db-type: MYSQL configuration: # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射 map-underscore-to-camel-case: true # 返回map时true:当查询数据为空时字段返回为null,false:不加这个查询数据为空时,字段将被隐藏 call-setters-on-nulls: true # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
dao
package com.zhao.demo.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhao.demo.entity.User; public interface UserDao extends BaseMapper<User> { }
service
package com.zhao.demo.service; import com.baomidou.mybatisplus.extension.service.IService; import com.zhao.demo.entity.User; public interface UserService extends IService<User> { }
serviceimpl
package com.zhao.demo.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhao.demo.dao.UserDao; import com.zhao.demo.entity.User; import com.zhao.demo.service.UserService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service @Transactional public class UserServicelmpl extends ServiceImpl<UserDao,User> implements UserService { }
entity
package com.zhao.demo.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @TableName("user") public class User { /** * 主键 * @TableId中可以决定主键的类型,不写会采取默认值,默认值可以在yml中配置 * AUTO: 数据库ID自增 * INPUT: 用户输入ID * ID_WORKER: 全局唯一ID,Long类型的主键 * ID_WORKER_STR: 字符串全局唯一ID * UUID: 全局唯一ID,UUID类型的主键 * NONE: 该类型为未设置主键类型 */ @TableId(type = IdType.ID_WORKER) private Long id; private String name; private String msg; }
controller
package com.zhao.demo.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhao.demo.entity.User; import com.zhao.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.*; @RestController public class UserController { @Autowired private UserService userService; /** * @RequestMapping() 不写,method = 就支持所有的请求方式 * @param userId * @return */ @RequestMapping (value = "/mapingTest") public String mapingTest(String userId){ return "ok"; } @PostMapping("/mapingTest") public String mapingTest1(String userId){ return "ok1"; } /** * 获取信息 * http://127.0.0.1:8081/getInfo/?userId=1226539460156207105 */ @GetMapping("/getInfo") public User getInfo(String userId){ User User = userService.getById(userId); return User; } /** * 查询全部信息 * */ @RequestMapping("/getList") public List<User> getList(){ List<User> UserList = userService.list(); return UserList; } /** * 分页查询全部数据 */ @RequestMapping("/getInfoListPage") public IPage<User> getInfoListPage(){ //需要在Config配置类中配置分页插件 IPage<User> page = new Page<>(); page.setCurrent(5); //当前页 page.setSize(1); //每页条数 page = userService.page(page); return page; } /** * 根据指定字段查询用户信息集合 */ @RequestMapping("/getListMap") public Collection<User> getListMap(){ Map<String,Object> map = new HashMap<>(); //kay是字段名 value是字段值 map.put("name","李斯"); Collection<User> UserList = userService.listByMap(map); return UserList; } /** * 新增用户信息 */ @RequestMapping("/saveInfo") public void saveInfo(@RequestBody User user){ if(!StringUtils.isEmpty(user)) { userService.save(user); } } /** * 批量新增用户信息 */ @RequestMapping("/saveInfoList") public void saveInfoList(){ //创建对象 User san = new User(); san.setName("哇给"); san.setMsg("小胖子"); User p = new User(); p.setName("JAVA"); p.setMsg("备注"); //批量保存 List<User> list =new ArrayList<>(); list.add(san); list.add(p); userService.saveBatch(list); } /** * 更新用户信息 */ @RequestMapping("/updateInfo") public void updateInfo(@RequestBody User user){ //根据实体中的ID去更新,其他字段如果值为null则不会更新该字段,参考yml配置文件 userService.updateById(user); } /** * 新增或者更新用户信息 */ @RequestMapping("/saveOrUpdateInfo") public void saveOrUpdate(@RequestBody User user){ //传入的实体类User中ID为null就会新增(ID自增) //实体类ID值存在,如果数据库存在ID就会更新,如果不存在就会新增 userService.saveOrUpdate(user); } /** * 根据ID删除用户信息 */ @RequestMapping("/deleteInfo") public void deleteInfo(String userId){ userService.removeById(userId); } /** * 根据ID批量删除用户信息 */ @RequestMapping("/deleteInfoList") public void deleteInfoList(@RequestBody List<String> userIdlist){ userService.removeByIds(userIdlist); } /** * 根据指定字段删除用户信息 */ @RequestMapping("/deleteInfoMap") public void deleteInfoMap(@RequestBody Map<String,Object> map){ //kay是字段名 value是字段值 // Map<String,Object> map = new HashMap<>(); // map.put("name","李斯"); // map.put("msg","小胖子"); userService.removeByMap(map); } }
注意点: mybatisplus 自动生成主键(在保存用户,不设置主键时)
ID_WORKER: 全局唯一ID,Long类型的主键
他的实体类 类型要为Long 数据库中要为 bigint 否则就会报错
项目地址 :https://gitee.com/richOne/mybatisplusDemo

浙公网安备 33010602011771号