使用环境: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'
如下图所示
2 创建相关mapper与实体类
创建后的目录结构如下
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映射文件,当然目前只有一个。存放路径如下
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);
}
}
运行,发现报错
那我们就去把这两个依赖导入一下,回到 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 连接数据库,在数据库中增加一条记录
回到 MyTestClass.java ,运行 main 方法,出现下面的报错 (如果没有下面的报错,但是中文乱码也要去按下面的步骤改)。
接下来去
File -> Settings -> Build,Execution,Deployment -> Build Tools -> Gradle
里把构建工具改成 IDEA 自带的。
再次运行,成功获得数据库中的数据。
参考文章:《mybatis-plus单独使用》www.jianshu.com/p/042567d0b…
《解决Gradle构建项目中文报GBK错误问题》blog.csdn.net/qq_43795348…