Mybatis

文章目录

  • Mybatis
    • Mybatis搭建与使用
      • 1. pom文件中的依赖
      • 2. 修改配置文件
      • 3. 定义Java 对象
      • 4. 定义mapper接口
      • 5. 在xml文件中实现
      • 6. 创建 Service层
      • 7. 创建一个Controller测试
    • Mybatis-plus
      • 1. 添加项目依赖
      • 2. 修改配置文件
      • 3. 添加 `mapperscan`注解
      • 4. 定义Java对象
      • 5. 定义mapper接口
      • 6. 定义Service层
      • 7. 测试下
      • 8. 分页查询配置
    • Tk-Mybatis (使用了 PageHelper)
      • 1. 添加项目依赖
      • 2. 修改配置文件
      • 3. 添加 `MapperScan ` 注解
      • 4. 定义java对象
      • 5. 定义mapper接口
      • 6. 定义Service层
      • 7. 测试下(使用PageHelper实现下分页)

Mybatis搭建与使用

1. pom文件中的依赖

<!-- mybatis 依赖 -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version>
</dependency>
<!-- mysql 驱动 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency><!-- 数据池 -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.1</version>
</dependency>

2. 修改配置文件

这里使用 yml 格式的配置文件

# 数据库连接配置
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcepassword: qwer1234url: jdbc:mysql://localhost:3306/project_manager?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMTdriver-class-name: com.mysql.cj.jdbc.Driverusername: root# mybatis 配置
mybatis:type-aliases-package: mybatis.pojomapper-locations: classpath:/mapper/*.xml

3. 定义Java 对象

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String name;private String password;private String others;
}

4. 定义mapper接口

@Mapper
public interface UserMapper {public List<User> selectAllUsers();public List<User> selectLimit(Map<String, Object> map);public void insertUser(User user);public void updateUser(User user);public void deleteUser(User user);public User selectUserById(Integer id);public User selectUserByName(String name);}

5. 在xml文件中实现

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="mybatis.mapper.UserMapper"><select id="selectAllUsers" resultType="mybatis.pojo.User">select *from pm_user;</select><select id="selectLimit" parameterType="map" resultType="mybatis.pojo.User">select *from pm_user limit #{startIndex}, #{pageSize};</select><select id="selectUserById" parameterType="integer" resultType="mybatis.pojo.User">select id, name, othersfrom pm_userwhere id = #{id}</select><select id="selectUserByName" parameterType="string" resultType="mybatis.pojo.User">select id, name, othersfrom pm_userwhere name = #{name}</select><insert id="insertUser" parameterType="mybatis.pojo.User">insert into pm_user (id, name, password, others)values (#{id}, #{name}, #{password}, #{others})</insert><update id="updateUser" parameterType="mybatis.pojo.User">update pm_user setpassword = #{password},others = #{others}where id = #{id}</update><delete id="deleteUser" parameterType="mybatis.pojo.User">deletefrom pm_user<where><if test="id != null">id = #{id}</if><if test="name != null">name = #{name}</if></where></delete>
</mapper>

6. 创建 Service层

创建接口文件

public interface UserService {public List<User> selectAllUsers();public List<User> selectLimit(Map<String, Object> map);public void insertUser(User user);public void updateUser(User user);public void deleteUser(User user);public User selectUserById(Integer id);public User selectUserByName(String name);
}

对定义的接口进行实现,这里为了演示,没有业务相关操作

@Service
public class UserServiceImp implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> selectAllUsers() {return userMapper.selectAllUsers();}@Overridepublic List<User> selectLimit(Map<String, Object> map) {return userMapper.selectLimit(map);}@Overridepublic void updateUser(User user) {userMapper.updateUser(user);}@Overridepublic void deleteUser(User user) {userMapper.deleteUser(user);}@Overridepublic User selectUserById(Integer id) {return userMapper.selectUserById(id);}@Overridepublic User selectUserByName(String name) {return userMapper.selectUserByName(name);}@Overridepublic void insertUser(User user) {userMapper.insertUser(user);}
}

7. 创建一个Controller测试

可以搞一个测试类测试,应该会更方便。

@RestController
@RequestMapping("pm")
public class Main {@Autowiredprivate UserService userService;@GetMapping("/test")public String test() {// 查询所有用户System.out.println("查询所有用户");System.out.println(userService.selectAllUsers());// 分页查询System.out.println("分页查询");Map<String, Object> map = new HashMap<>();map.put("startIndex", 0);map.put("pageSize", 3);System.out.println(userService.selectLimit(map));// 创建用户User user = new User();user.setId(null);user.setName("000");user.setOthers(null);user.setPassword("123");userService.insertUser(user);System.out.println("创建用户");System.out.println(user);// 更新用户user.setId(1);user.setPassword("999");user.setOthers("update");userService.updateUser(user);System.out.println("更新用户");System.out.println(user);// 删除用户user.setName("asd");user.setId(null);userService.deleteUser(user);System.out.println("根据用户名删除");System.out.println(user);user.setId(4);user.setName(null);userService.deleteUser(user);System.out.println("根据id删除");System.out.println(user);// 根据用户名查询System.out.println(userService.selectUserByName("qwe"));// 根据 id 查询System.out.println(userService.selectUserById(12));return "OK";}
}

Mybatis-plus

1. 添加项目依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version>
</dependency>

2. 修改配置文件

只需要配置数据库的相关内容,Mybatisplus不需要额外的配置信息。

3. 添加 mapperscan注解

在项目主文件*Application.java中添加@MapperScan()注解

4. 定义Java对象

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String name;private String password;private String others;
}

5. 定义mapper接口

由于使用了 MybatisPlus,这步变得非常简单,可以直接继承 官方提供的内容即可。

public interface UserMapper extends BaseMapper<User>

6. 定义Service层

由于使用了MybatisPlus,这里就可以选择:

  • 如果官方提供的Service层接口可以满足业务需要,就可以直接使用官方的接口。

  • 如果官方提供的接口不满足业务需要:

    • 可以在官方Service接口的基础上,做操作。
    • 可以自己根据mapper层的官方接口实现Service层的逻辑。

这里就简单的调用下官方接口,自己做一个简单判断

public interface UserService extends IService<User> {}
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Overridepublic boolean save(User entity) {log.debug("check user id: {}", entity.getId());if (entity.getId()== null) {return false;}return super.save(entity);}
}

7. 测试下

@Test
void selectLimit() {Page<User> page = new Page<>(0, 3);// page.setSize(2);// page.setCurrent(0);Page<User> page1 = userService.page(page);List<User> records = page1.getRecords();System.out.println(records);}

8. 分页查询配置

就简单的试了这个功能,把分页查询需要配置的写一下。

要实现分页查询的功能,需要在代码中写一个 配置类 , 里面创建一个拦截器。

这样就可以实现分页查询了…

@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}

Tk-Mybatis (使用了 PageHelper)


1. 添加项目依赖

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version>
</dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.5</version>
</dependency><!-- pagehelper -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.3</version>
</dependency>

2. 修改配置文件

# data
spring:datasource:url: jdbc:mysql://localhost:3306/project_manager?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMTusername: rootpassword: 'root'driver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:/mapper/*.xmltype-aliases-package: tkmybatis.pojo# page helper 配置
pagehelper:helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSql

3. 添加 MapperScan 注解

在项目主文件*Application.java中添加@MapperScan()注解

4. 定义java对象

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String name;private String password;private String others;
}

5. 定义mapper接口

接口定义变得比较简单,tk-mybatis中已经封装了大部分的基础功能。

public interface UserMapper extends Mapper<User>, MySqlMapper<User>, RowBoundsMapper<User> {}

6. 定义Service层

这个…就不搞了

7. 测试下(使用PageHelper实现下分页)

@Testvoid select() {// Example example = new Example(User.class);// example.createCriteria().andBetween("id", 1, 1000);// example.createCriteria().andEqualTo("id", "1");PageHelper.startPage(1, 2);List<User> users = userMapper.selectAll();// List<User> users = userMapper.selectByExample(example);PageInfo pageInfo = new PageInfo(users);System.out.println("分页查询");System.out.println(pageInfo.isHasNextPage());pageInfo.setNextPage(2);System.out.println(pageInfo.getList());}

SpringBoot体验Mybatis、MybatisPlus、TKMybatis相关推荐

  1. Springboot、Mybatis(Mybatis-plus) 、Mysql

    一.Springboot SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程.另外Sprin ...

  2. 5-TDengine集成SpringBoot,MyBatis,MyBatisPlus

    [本文正在参与 "拥抱开源 | 涛思数据 TDengine有奖征稿] https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857 ...

  3. springboot之mybatis完美一击mybatis-plus

    springboot之mybatis完美一击mybatis-plus 说明 添加依赖 entity mapper 分页插件 mp的通用crud 一些细节 两个update操作的区别 查询 删除 条件构 ...

  4. SpringBoot教程(十一) | SpringBoot集成Mybatis

    上一篇文章我们介绍了SpringBoot集成JdbcTemplate.简单体验了一下JdbcTemplate框架的用法,今天的内容比较重要,我们来介绍一下SpringBoot集成Mybatis的步骤. ...

  5. SpringBoot项目拥抱Mybatis-Plus持久层框架实践

    本文目录 前言 自从 Mybatis-Plus推出以来,越来越多的公司在自己的项目中选择Mybatis-Plus框架替换了持久层框架Mybatis.因为Mybatis-Plus用起来既有Mybatis ...

  6. SpringBoot集成Mybatis项目实操

    本文为<从零打造项目>系列第三篇文章,首发于个人网站. <从零打造项目>系列文章 比MyBatis Generator更强大的代码生成器 SpringBoot项目基础设施搭建 ...

  7. oracle jdbctype null,Oracle数据库之springboot 项目mybatis plus 设置 jdbcTypeForNull

    本文主要向大家介绍了Oracle数据库之springboot 项目mybatis plus 设置 jdbcTypeForNull,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. ...

  8. SpringBoot中使用Mybatis-plus整合PageHelper分页插件踩坑

    今天使用SpringBoot中使用Mybatis-plus整PageHelper分页插件把我给坑惨了,我报错的pom.xml配置如下,其它的依赖就忽略掉了 <!--pagehelper --&g ...

  9. springboot 整合mybatis plus

    简单介绍下 mybatis plus,mybatis plus(简称 MP)是一个 mybatis  的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 本文讲解使用 ...

  10. java项目管理软件系统springboot+mysql+layui+mybatis-plus进销存源码

    摘要:随着各行各业信息化的快速发展,目前物流需求也发生了颠覆性的革命,传统纸质记录物流的方式已经成为过去,为了满足现代化企业物流的发展,因此,对于企业需要一套自动化的仓库管理系统是很有必要的. 本系统 ...

最新文章

  1. java 生成正弦波声音_如何生成一个正弦波声音曲线?
  2. 带你见识世界的5部纪录片(免费领取)
  3. python实验总结心得体会_Python,Pyvisa操作Agilent 86140x系列OSA
  4. Windows server 2003网络服务之搭建服务器群集
  5. linux怎么加块硬盘,如何给linux添加一块硬盘
  6. 阿里云服务器好吗?老司机谈谈阿里云服务器的使用感受
  7. oracle羊毛,弃Cloudflare,薅Oracle羊毛
  8. WEP(有线等效保密)
  9. 修改手机状态栏字体的颜色(如:白底黑字)
  10. 45页精华《2022中国建筑行业数字化转型研究报告》出炉(附下载)
  11. 北京地铁车站换乘示意图行动(2010年4月1日更新完整)
  12. 【NAS】群晖使用自带DDNS实现外网访问
  13. CAD转Excel,如何快速转换呢?
  14. android电子书App、自定义图表、仿腾讯漫画App、仿淘宝优惠券、3D选择容器等源码...
  15. Franka Emika Panda机械臂规划路径时,rviz中手爪显示碰撞
  16. 手机QQ2008下载地址
  17. 译-Dart虚拟机入门(Introduction to DartVM)
  18. numpy学习笔记之随机采样函数
  19. Git报错解决:remote: error: File:1f6cc8452313 157.10 MB, exceeds 100.00 MB
  20. IOS11使用IQKeyboardManager导致tableview位置变形

热门文章

  1. 解决WEPE(微pe)安装win11时这台电脑不符合Windows所需的最低系统要求
  2. noip2016海港(超级详细)
  3. 天载免息股票汽车整车涨幅居前
  4. python实现音乐播放器_python实现音乐播放器
  5. 荣誉背后的故事:达内到底有多强?
  6. 系统安全中主要风险有哪些,弱密码怎么解决?
  7. 深度学习:摩尔纹识别(翻拍检测)
  8. python函数分为哪几种_python函数有哪几种
  9. 网络限速软件测试大乐,宽带测速谁靠谱?网速测试软件大对比
  10. 机器学习10-信用卡反欺诈模型