个人技术分享

SpringBoot集成第三方技术,一般都分为导坐标,改配置,写代码三个步骤。

集成Mybatis也类似,新建一个SpringBoot项目。修改:pom.xml文件。

一、导入坐标

<!--druid-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.16</version>
</dependency>
<!--mybatis-->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>3.0.3</version>
</dependency>
<!--mysql-->
<dependency>
	<groupId>com.mysql</groupId>
	<artifactId>mysql-connector-j</artifactId>
	<scope>runtime</scope>
</dependency>
<!--sqlserver-->
<dependency>
	<groupId>com.microsoft.sqlserver</groupId>
	<artifactId>mssql-jdbc</artifactId>
	<scope>runtime</scope>
</dependency>
<!--lombok-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>

druid:数据库连接池,也可以用其他的。

mybatis:mybatis包。

mysql:mysql数据库驱动。(根据数据库实际情况引用)

sqlserver:sqlserver数据库驱动。(根据数据库实际情况引用)

lombok:简化实体类开发。

二、修改配置

修改application.yml文件,增加:

spring:
#数据源配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: "jdbc:mysql://【IP】:3306/【database】"
    username: "【用户名】"
    password: "【密码】"
    type: com.alibaba.druid.pool.DruidDataSource # 数据库连接池配置

#Mybatis
mybatis:
  mapper-locations: classpath:mapper/*.xml  
  type-aliases-package: com.qingshan.mode

mapper-locations: 定义mapper位置。

type-aliases-package: 为了在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名。与下文的实体类所在包名对应。

三、编写代码

1.实体类:User.java,注意包名com.qingshan.mode,与上面的 type-aliases-package 对应。

package com.qingshan.model;
import lombok.Data;

@Data
public class User {
    private int id;
    private String name;
}

2.数据层:UserMapper.java(注意:使用注解Mapper)

package com.qingshan.mapper;

import com.qingshan.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;

@Mapper
public interface UserMapper {
    //无参数查询
    List<User> getAll();

    //单条件查询
    User getById(int id);
}

3.业务层:

3.1 先定义个接口。(注意:使用注解Repository)

package com.qingshan.service;

import com.qingshan.model.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserService {
    User getById(int id);
}

3.2 实现接口(注意:使用注解Service、Transactional)

package com.qingshan.service.impl;

import com.qingshan.mapper.UserMapper;
import com.qingshan.model.User;
import com.qingshan.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMaper;

    @Override
    public User getById(int id) {
        return userMaper.getById(id);
    }
}

4.在web层使用,通过AutoWired注入。

package com.qingshan.web;
 
import com.qingshan.service.UserService; 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class HomeController {

    @Autowired
    private UserService userService;

    @GetMapping("/")
    public String index() {
        var user = userService.getById(1);
        System.out.println(user);
        return "index";
    }
}