Gradle项目单独使用mybatis-plus

1,468 阅读3分钟

使用环境:gradle + IDEA + jdk17 + MySQL

使用介绍:该文章单独使用 mybatis-plus ,不使用 spring-boot 框架进行数据库操作。

1 创建一个 gradle 项目,在 build.gradle 中引入相关依赖

首先去 gradle 官网下载 bin 文件,并配置好系统环境变量。

接下来创建 gradle 项目:

gradle init

build.gradle 中引入相关依赖

implementation group: 'com.baomidou', name: 'mybatis-plus', version: '3.5.2'

如下图所示

image.png

2 创建相关mapper与实体类

创建后的目录结构如下

image.png

userMapper.java

package com.wyu.ydcrawler.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wyu.ydcrawler.entity.User;

public interface UserMapper extends BaseMapper<User> {
}

这里需要注意的是需要继承BaseMapper<实体类泛型>

User实体类

package com.wyu.ydcrawler.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
// 这里换成数据库中的表名
@TableName("test")
public class User {

    @TableId
    private Integer userid;
    private String name;
    private Integer age;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + ''' +
                ", age=" + age +
                ", userid=" + userid +
                '}';
    }
    
}

该类为了简单,必须与数据库的表一一对应(即 表的名字对应类名,字段名对应属性名,如果不对应,也可通过注解建立对应关系)。对应的原因是方便 mybatis-plus 封装 sql 。并且必须突出id属性,即如果实体类的属性对应表的主键,那么必须指明,如果不指明的话,在启动 mybatis-plus 加载配置文件并封装 BaseMapper 相关方法时,会默认找实体类的名称为 id 的属性与主键建立对应关系,如果实体类没有名称为 id 的属性,那么就会报错。

3 创建sql映射文件usermapper.xml

为了对sql映射文件与核心配置文件(mybatis.cfg.xml)区分,将创建一个mapper文件夹用于存放所有sql映射文件,当然目前只有一个。存放路径如下

image.png

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.wyu.ydcrawler.mapper.UserMapper">

</mapper>

这里需要注意的是namespace传入UserMapper.java的全类名,好用来创建mapper对象。

4 在 gradle 项目的 src/main/resources 配置目录下创建 mybatis-plus 的核心文件 mybatis.cfg.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>
    <!-- 在控制台输出执行的sql语句 -->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
    <environments default="mysql">
        <environment id="mysql" >
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mytestdb?useSSL=true"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
       <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
    
</configuration>

要注意,连接数据库的 url 、用户名、等等要改成你自己的。

<mapper resource="mapper/usermapper.xml"/>用于引入映射文件,resource 的值为usermapper.xml 文件相对于 mybatis.cfg.xml 的相对路径。

5 启动 mybatis-plus 访问数据库

MyTestClass.java

package com.wyu.ydcrawler;

import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
import com.wyu.ydcrawler.mapper.UserMapper;
import com.wyu.ydcrawler.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.io.InputStream;


public class MyTestClass {

//    private static final SqlSessionFactory sqlSessionFactory = null;

    public static void main(String[] args) throws Exception {
        //获取配置文件的输入流
        InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");

        MybatisSqlSessionFactoryBuilder builder = new MybatisSqlSessionFactoryBuilder();

        //通过配置文件获取session工厂
        SqlSessionFactory sessionFactory = builder.build(inputStream);

        //获取一个session会话
        SqlSession session = sessionFactory.openSession();

        UserMapper mapper = session.getMapper(UserMapper.class);

        User user = mapper.selectById(1);

        System.out.println(user);


    }
}

运行,发现报错

image.png

image.png

那我们就去把这两个依赖导入一下,回到 build.gradle ,新增两行

implementation group: 'org.springframework', name: 'spring-core', version: '5.3.23'

implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.30'

最终build.gradle的一部分看起来是像这样的

dependencies {
    // Use JUnit Jupiter for testing.
    testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'

    implementation group: 'com.baomidou', name: 'mybatis-plus', version: '3.5.2'

    compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.24'

    implementation group: 'org.springframework', name: 'spring-core', version: '5.3.23'

    implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.30'


    // This dependency is used by the application.
    implementation 'com.google.guava:guava:31.0.1-jre'
}

在运行前,先用 Navicat 连接数据库,在数据库中增加一条记录

image.png

回到 MyTestClass.java ,运行 main 方法,出现下面的报错 (如果没有下面的报错,但是中文乱码也要去按下面的步骤改)。

image.png

接下来去 File -> Settings -> Build,Execution,Deployment -> Build Tools -> Gradle 里把构建工具改成 IDEA 自带的。

image.png

再次运行,成功获得数据库中的数据。

image.png

参考文章:《mybatis-plus单独使用》www.jianshu.com/p/042567d0b…

《解决Gradle构建项目中文报GBK错误问题》blog.csdn.net/qq_43795348…