MyBatis | 使用插件better-mybatis-generator自动生成dao、pojo

0️⃣简介

🗼简介

在我们编写MyBatis的项目时,常常需要为数据表编写大量的SQL语句以及dao类。better-mybatis-generator作为一款IDEA插件,可以自动为我们生成所需要的pojo类、dao类,并提供相当多的SQL单表查询操作。利用该插件,可以大大减小我们代码编写的工作量,从而更专注于业务逻辑的书写。

🗼开发工具

  • 编辑器:IDEA企业版

  • 构建系统:Maven

  • 数据库:MySQL 8.0.31

1️⃣添加插件

打开IDEA,找到插件,在搜索栏搜索better-mybatis-generator插件,点击添加。

2️⃣IDEA连接数据库

🗼选择MySQL

打开IDEA右侧的数据库连接,选择 + 号,选择MySQL.

🗼填写相关配置

填写相关配置,包括MySQL连接的用户名和密码,要连接的数据库,在URL的后面添加如下字段:

?serverTimezone=GMT&useSSL=false

连接成功后,可以看见我们数据库中的表。如果没有出现表,可以点击上面的刷新按钮刷新一下

3️⃣自动生成Dao类

🗼新建目录存放类

右键src/main/java目录,新建com.app.pojo、com.app.dao、com.app.service目录

🗼创建表

创建一张用户表,并插入一些数据,用于后面的测试。

create table user(
    id int primary key auto_increment,
    name varchar(20),
    password varchar(20)
    );
insert into user values(null,"ketty","root");
insert into user values(null,"tom","root");
......
select * from user;

🗼选择表

右键user表,选择mabatis-generate选项。

🗼填写相关配置

这里我们修改pojo类dao类dao.xml 三大类文件生成的位置(红框标注处),分别修改成我们刚刚新建的com.app.pojo包以及com.app.dao包

🔴注意如果你的mysql版本是8.0及以上,需要勾选下面mysql_8(红框标注处)
🔴查看mysql版本:打开cmd,输入mysql -V
mysql -V

修改完毕后,点击确定。第一次连接会要我们输入数据库连接的账号和密码。填写后在点击确定。

可以看见,我们的com.app.pojo和com.app.dao目录下多了四个文件。这四个文件是插件自动帮我们生成的,包括生成了一些常用的SQL单表操作,如根据条件查询,根据条件修改等。我们在service中就可以直接使用他们了。

4️⃣使用Dao类

编写完MyBatis的配置文件后,我们就可以去使用Dao中的方法了。

<?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>
    <!--配置资源包-->
    <properties resource="jdbc.properties"/>

    <!--配置别名-->
    <typeAliases>
        <typeAlias type="com.app.pojo.User" alias="user"/>
        <typeAlias type="com.app.pojo.UserExample" alias="userExample"/>
    </typeAliases>

    <!--配置多个环境,default属性指定使用哪个环境-->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--配置参数-->
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${name}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置关联映射文件-->
    <mappers>
        <mapper resource="com.app.dao/EmployeeDao.xml"/>
    </mappers>
</configuration>
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_study
name=root
password=root

🗼测试类

package com.app.test;

import com.app.dao.UserDao;
import com.app.pojo.User;
import com.app.pojo.UserExample;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class UserTest {
    private SqlSession sqlSession;
    private UserDao userDao;

    @Before
    public void begin() throws IOException {
        // 获取流对象,读取核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        // 创建 sqlSessionFactoryBuilder 工厂构建者对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        // 获取 sqlSessionFactory 工厂对象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        // 获取 SqlSession 对象
        sqlSession = sqlSessionFactory.openSession();
        // 获取 UserDao 代理类对象
        userDao = sqlSession.getMapper(UserDao.class);
    }

    @After
    public void end() {
        // 提交事务
        sqlSession.commit();
        // 释放资源
        sqlSession.close();
    }
}

🗼简单方法

📌selectByPrimaryKey()

按主键查询数据,返回查询的结果。

    @Test
    public void test() {
        User user = userDao.selectByPrimaryKey(1);
        System.out.println(user);
    }

📌insert()

插入一条数据,返回成功的条数。

    @Test
    public void test() {
        User user = new User();
        user.setName("hello");
        user.setPassword("3333");
        int i = userDao.insert(user);
        System.out.println(i);
    }

🗼Criteria内部类

如果使用插件生成的dao仅仅只有简简单单的无条件增删改查操作,其功能就未免过于鸡肋。实际上,better-mybatis-generator插件还提供了大量有条件的SQL操作。

如果我们打开com.app.pojo目录,我们可以发现,better-mybatis-generator插件不仅生成了User这个pojo类,还生成了一个UserExample类。

在这个类中,有一个内部类Criteria。我们可以通过userExample.createCriteria()方法创建它。

        UserExample userExample = new UserExample();
        UserExample.Criteria criteria = userExample.createCriteria();

在这个内部类包含了一系andXXXX()方法,这些方法实际上就是一系列的SQL查询条件。我们通过这些方法,传入我们需要的条件的值。然后将这个criteria对象传入到dao指定的SQL操作方法中,就可以实现有条件的SQL操作。

假如我们需要实现这样一个需求:模糊查询user表中name值包含"t"的记录数。我们可以通过下面的SQL语句:

select count(*) from user where name like "%t%";

显然,这是一个有条件的SQL查询,那么我们怎样通过java代码实现呢?

在UserDao中,为我们提供了countByExample()这个方法。如果不传入任何参数(即传null),这个方法的SQL语句是如下这样:

select count(*) from user;

我们可以创建一个criteria对象,在criteria对象中,我们使用andNameLike()方法,传入“t”字符串,然后将userExample传入countByExample()方法中,即如下代码:

    @Test
    public void test() {
        UserExample userExample = new UserExample();
        UserExample.Criteria criteria = userExample.createCriteria();
        criteria.andNameLike("%t%");
        long i = userDao.countByExample(userExample);
        System.out.println(i);
    }

点击运行,操作台输出了结果3,与我们通过cmd查询的结果是一致的。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis Generator Maven插件可以帮助开发人员自动生成MyBatis的代码,包括Mapper接口、XML映射文件和POJO对象等。以下是使用MyBatis Generator Maven插件的步骤: 1. 配置pom.xml文件 在pom.xml文件中添加以下依赖: ```xml <dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency> </dependencies> ``` 在pom.xml文件中添加以下插件: ```xml <build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.0</version> <executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 2. 配置generatorConfig.xml文件 在src/main/resources目录下创建generatorConfig.xml文件,并添加以下内容: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="context1"> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password="123456"> </jdbcConnection> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <table tableName="user" domainObjectName="User"/> </context> </generatorConfiguration> ``` 其中,配置文件中的jdbcConnection节点需要根据你的实际情况进行修改。 3. 运行插件 在命令行中执行以下命令: ``` mvn mybatis-generator:generate ``` 插件将会读取generatorConfig.xml文件中的配置信息,并自动生成Mapper接口、XML映射文件和POJO对象等。生成的文件将会保存在target目录下的generated-sources/mybatis-generator目录中。 以上就是使用MyBatis Generator Maven插件的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值