个人技术分享

Mybatis

MyBatis能够非常灵活地实现动态SQL,可以使用XML或注解来配置和映射原生信息,能够轻松地将Java的POJO(Plain Ordinary Java Object,普通的Java对象)与数据库中的表和字段进行映射关联。

MyBatis-Plus是一个 MyBatis 的增强工具,在 MyBatis 的基础上做了增强,简化了开发。

Mybits使用

创建项目

添加依赖

  <!--mybatis-plus 依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

        <!--mysql 依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--druid 数据连接池 依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.20</version>
        </dependency>

application.properties中配置据库数链接信息:

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring??AllowPublicKeyRetrieval=True
spring.datasource.username=root
spring.datasource.password=root
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

 

创建包

package com.example.mpdemo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author Fxdll
 * @Date 2024/5/4 22:52
 * @PackageName:com.example.mpdemo.controller
 * @ClassName: UserController
 * @Description: TODO
 * @Version 1.0
 */
@RestController
public class UserController {
    @GetMapping("/user")
    public String query() {
        return "user list";
    }
}

创建mapper

创建User实体类,一定要有Getter,Setter方法。

alt+insert

再加上tostring

package com.example.mpdemo.entity;

/**
 * @Author Fxdll
 * @Date 2024/5/4 23:11
 * @PackageName:com.example.mpdemo.entity
 * @ClassName: User
 * @Description: TODO
 * @Version 1.0
 */
public class User {
    private int id;
    private String username;
    private String password;
    private String birthday;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", birthday='" + birthday + '\'' +
                '}';
    }
}

创建Mapper接口,实现动态SQL。

package com.example.mpdemo.mapper;

import com.example.mpdemo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @Author Fxdll
 * @Date 2024/5/4 22:54
 * @PackageName:com.example.mpdemo.mapper
 * @ClassName: UserMapper
 * @Description: TODO
 * @Version 1.0
 */
@Mapper
public interface UserMapper {
//查询所有用户
    @Select("select * from user")
    public List<User> find();
}

最后在路由中调用

注入usermapper

@Autowired
private UserMapper userMapper;
@RestController
public class mapper {
    @Autowired
    UserMapper userMapper;

    @GetMapping("/m1")
    public String m1(){
        List<User> users = userMapper.find();
        System.out.println(users);
        return "yes";
    }
}

如果要返回json 则

package com.example.mpdemo.controller;

import com.example.mpdemo.entity.User;
import com.example.mpdemo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @Author Fxdll
 * @Date 2024/5/4 22:52
 * @PackageName:com.example.mpdemo.controller
 * @ClassName: UserController
 * @Description: TODO
 * @Version 1.0
 */
@RestController
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @GetMapping("/user")
    public List query() {
        List<User> list = userMapper.find();
        System.out.println(list);
        return list;
    }
}

 

 

MybitsPlugs使用

添加依赖,创建实体类都是一样的。

创建Mapper,只需要直接继承BaseMapper,便可拥有一些基础的操作。

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

@TableName,当表名与实体类名称不一致时,可以使用@TableName注解进行关联。 @TableField,当表中字段名称与实体类属性不一致时,使用@TableField进行关联 @TableId,用于标记表中的主键字段,MybatisPlus也提供了主键生成策略