自学SpringBoot学习笔记--整合MyBatis

本文介绍了如何将SpringBoot与MyBatis进行整合,包括配置YAML文件、设置数据源、MyBatis配置、创建mapper.xml文件、实体类和DAO层。还分享了在整合过程中可能遇到的问题及解决办法。
摘要由CSDN通过智能技术生成

真的是工作劲头一天不如一天,springboot真的是简洁~

昨天纠结了一会还是把这个配置文件改成yml格式了,主要是书写起来比较简洁。


开始整合mybatis,首先application.yml中的配置

#数据库配置
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/testdata
    username: root
    password: 123123
mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml

上面是配置数据源,下面是mybatis的配置文件放置的位置,两个路径都是以resources作为根目录保存的,所以要创建一个文件夹在resources下,如下架构:


在创建之前上网找过类似的教程,大体上可以分为两类整合方法,注解类和xml类。因为之前一直是用mybatis+springmvc,所以比较习惯的是使用xml类,当然mybatis也针对springboot进行了优化。所以以下笔记皆是极简xml类的写法。

首先是两个配置文件

mybatis-config.xml 这个文件如果你有需求可以进行配置,引用一个对mybatis-config.xml的解释,博主写的很详细,留下以后慢慢读,嘿嘿~

我这里的配置文件就空空如也了,我暂时不需要。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

</configuration>

然后是mapper.xml,说之前了解一下表结构

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`  (
  `id` bigint(100) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `usersex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES (1, 'aaaa', 'bbb', 'ccc', 'ddd');

SET FOREIGN_KEY_CHECKS = 1;


根据表结构创建UserMapper.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="com.learn.paomo.mapper.UserMapper" >
    <resultMap id="resultmap" type="com.learn.paomo.entity.User" >
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="username" property="userName" jdbcType="VARCHAR" />
        <result column="password" property="passWord" jdbcType="VARCHAR" />
        <result column="usersex" property="userSex" jdbcType="VARCHAR"/>
        <result column="nickname" property="nickName" jdbcType="VARCHAR" />
    </resultMap>

    <select id="searchList" resultMap="resultmap"  >
        SELECT
         username,password,usersex,nickname
        FROM users
    </select>

</mapper>

然后依次创建实体类和Dao层,实体类和DAO不粘了,看一下结构:


这两个分别是实体类和DAO,DAO还是粘一下吧,哝:

package com.learn.paomo.mapper;

import com.learn.paomo.entity.User;

import java.util.List;

public interface UserMapper {
    List<User> searchList();
}

最后一步:PaomoApplication.java(*Application.java)文件增加一行代码

package com.learn.paomo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.learn.paomo.mapper")
public class PaomoApplication {

   public static void main(String[] args) {
      SpringApplication.run(PaomoApplication.class, args);
   }
}

@MapperScan:通过使用@MapperScan可以指定要扫描的Mapper类的包的路径。注解。

ojbk。现在去Controller类里查看一下是怎么调用的。

package com.learn.paomo.controller;

import com.learn.paomo.entity.User;
import com.learn.paomo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class HelloWorldController {

    @Autowired
    private UserMapper userMapper;

    @RequestMapping("/helloworld")
    public List<User> HelloWorld(){
        List<User> list=userMapper.searchList();
//        System.out.println(list.get(0).getNickName());
        return list;

    }
}

没有用service层,直接调用的DAO。只需要给UserMapper加注解@Autowired就行。运行一下。


哝。。

记录一下碰到的问题:

1.如果碰到了数据库的问题,或者mapper配置文件的问题,别怀疑,慢慢看,肯定是自己写错了,比如我把localhost落下一个l ,百度了1小时。。。。

2.idea用户可能会碰到一个问题就是在Controller里引用mapper使用@Autowired注解的时候,会报红。运行应该没问题,但是就是Could not autowire. No beans of 'UserMapper' type found. less... (Ctrl+F1) 

Checks autowiring problems in a bean class.这样的错误。然后File-->setting-->editor-->下图


休息一下~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值