SpringBoot+MybatisPlus

Springboot整合Mybatis-Plus

  1. 创建SpringBoot项目,我这里创建一个纯Springboot项目,JDK1.8,mybatis打错了,创建完才注意,意外意外

在这里插入图片描述

点击下一步,next,boot版本使用2.6.4,点击Finish执行

在这里插入图片描述

  1. 创建完成之后点开pom.xml,这个结构不多说了,如果不理解的可以看看maven,么么

    <!-- 这个是创建boot带的依赖 -->
    <dependencies>
        <!-- boot依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    	  <!--  测试依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
  2. 连接mybatis-plus需要导入依赖,

    <!-- 连接驱动 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <!-- mysql驱动
    5.X和8X的驱动不一样,所以要注意自己数据库的版本,这个boot有父模块,你也可以通过<version>覆盖掉原有版本,我这里是 8.X的版本-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>
    <!-- 需要使用mybatis-plus,所以这个依赖也不可少 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.1</version>
    </dependency>
    
  3. 要连接MySQL,那么最基本的账号密码啥的要配置,所以在resources下面会有一个application.properties,配置即可,如果要用yml,也可以更换为yml,这里使用properties,账号密码驱动改成自己的

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
    spring.datasource.username=root
    spring.datasource.password=123
    
  4. 启动boot项目,应该正常启动了,接下来对数据库进行基础CRUD,这里使用Test模板测试

    1. 数据库非常简单,就三个字段

      User表:

      id主键自增, username varchar(50)  password varchar(50)
      
    2. 创建实体类 entity

      // 省略Getter,Setter,toString等方法...,因为主键自增,所以有参构造器创建一个username,password的方便后期插入使用
      @TableName("user") //可以加上做一个标识,代表跟数据库user表映射
      public class User {
          private static final long serialVersionUID = 1L;
          /**
      	 * 主键ID,主键自增后期插入不需要调整Id
      	 */
          @TableId(value = "id", type = IdType.AUTO)
          private Integer id;
          /**
      	 * 登录账号
      	 */
          private String username;
          /**
      	 * 登录密码
      	 */
          private String password;
      
    3. 创建操作数据库的mapper接口,这里不用xml文件了,如果需要跟mybatis是一样的使用方式,我这里直接用plus封装好的方法进行操作,mapper包

      @Mapper 
      public interface UserMapper extends BaseMapper<User> {}
      

      ps:@Mapper注解

      作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
      添加位置:如果接口少那么可以直接打@Mapper注解,后期类似的接口肯定会很多,可以在Springboot启动类添加注解@MapperScan("包路径")即可
      
    4. 数据存储类,直接继承ServiceImpl即可,basic包

      @Component  //交给IOC容器管理,方便后期注入
      public class UserDatastore extends ServiceImpl<UserMapper, User> { }
      
    5. 万事俱备,只差东风,我这里因为是直接操作数据,所以没有controller层,直接使用service层即可,service

      @Service
      public class UserService {
      	@Autowired
      	private UserDatastore userDatastore;
      	/**
      	 * 通过ID查询用户信息
      	 * @param id id
      	 * @return 返回用户信息
      	 */
      	public User queryById(Integer id) {
      		return userDatastore.getById(id);
      	}
      	/**
      	 * 通过ID删除用户信息
      	 * @param id id
      	 * @return 返回删除结果
      	 */
      	public boolean deleteById(Integer id) {
      		return userDatastore.removeById(id);
      	}
      	/**
      	 * 插入信息
      	 * @param username 插入账号
      	 * @param password 插入密码
      	 * @return 返回是否插入成功
      	 */
      	public boolean insertUser(String username, String password) {
      		return userDatastore.save(new User(username, password));
      	}
      
      	/**
      	 * 修改信息
      	 */
      	public boolean updateUser(Integer id,String username) {
      		UpdateWrapper updateWrapper = new UpdateWrapper();
      		updateWrapper.eq("id",id);
      		updateWrapper.set("username",username);
      		return  userDatastore.update(updateWrapper);
      	}
      
    6. 测试类测试方法,直接自动生成,点到Generate,有一个Test,我就不一步一步截图了

在这里插入图片描述
在这里插入图片描述

  1. 生成之后把Service注入进来 代码如下

    @SpringBootTest // 自己添加
    class UserServiceTest {
    	@Autowired  // 自己添加
    	private UserService userService;
    
    	@Test
    	void queryById() {
    		System.out.println(userService.queryById(3));
    	}
    
    	@Test
    	void deleteById() {
    		System.out.println(userService.deleteById(3));
    	}
    
    	@Test
    	void insertUser() {
    		userService.insertUser("loveYou-Mybatis-plus","123");
    	}
    
    	@Test
    	void updateUser() {
    		userService.updateUser(1,"loveYou-Mybatis-plus");
    	}
    }
    
  2. 运行之后,整体效果还是很哇塞的,下面说说可能遇见的问题

    1. 运行之后发现空指针异常,通过debug得知注入Userservice为空,这种情况,原因是虽然通过@Service注解注入到IOC容器了,但是对于测试类来说是拿不到的,这个问题如果心细的在Spring就已经注意到了,我们需要借助到注解@RunWith(SpringRunner.class),其实在Springboot已经优化了,只是给大家做一个补充,SpringbootTest注解里面就已经解决了这个问题了,所以不是这里的原因

      报错的原因可能是因为用到了UserMapper接口,但是没有实现类,所以需要在UserMapper接口中添加@Mapper注解,这个注解的解释在创建UserMapper的时候已经给大家解释过,大家可以看看

    2. 运行后发现Id对照出现问题,如果细心的小伙伴可能已经发现,我这里插入的时候并没有插入Id,因为Id设置为主键自增,但是大家会报错就类似于插入的类型不对,所以需要在User实体类上加入

      @TableId(value = "id", type = IdType.AUTO)
      private Integer id;
      
  3. 最后大家如果遇到问题,欢迎留言~

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值