当前位置:首页 > mybatisPlus > 正文内容

mybatisPlus如何单独使用

关中浪子2年前 (2022-04-12)mybatisPlus1754
【腾讯云】2核2G4M云服务器新老同享99元/年,续费同价
找梯子最重要的就是稳定,这个已经上线三年了,一直稳定没有被封过,赶紧下载备用吧!

上次我单独使用了mybatis测试了增删改查功能,这次引用了mybaisPlus,看了半天官网没有说是单独使用mybatisPlus的,都是要结合springboot或者spring等,由于mybatis是可以进行单独使用的,所以再完成了mybatis学习之后,再引入mybatis-plus后,感觉无从下手了。

image.png


  1. 先引入mybatis-plus

            <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.5.1</version>
        </dependency>

2. sqlMapConfig.xml文件(基本保存不动,只是修改mapper映射,新建一个新的mybatis-plus的mapper)

 
<?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>
    <settings>
        <!--开启二级缓存的开关-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
    <!-- 运行环境配置 -->
    <!--default属性:指定使用哪一个运行环境  -->
    <environments default="development">
        <!--id属性:唯一标识一个运行环境  -->
        <environment id="development">
            <!-- 事务管理器配置,type="JDBC":mybatis框架默认使用jdbc事务 -->
            <transactionManager type="JDBC" />
            <!--数据源配置,type="POOLED":mybatis框架提供的连接池  -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/Test?serverTimezone=UTC" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <!-- 加载映射文件 -->
    <mappers>
<!--        <mapper resource="mybatis/UserMapper.xml"/>-->
        <mapper resource="mybatisPlus/UserMapper.xml"></mapper>
    </mappers>
</configuration>

3.mapper文件,直接继承mybatis-plus的mapper类(实现了基本的增删改查)

package com.test.mybatisPlus;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.test.mybatis.User;
public interface UserMapper extends BaseMapper<User> {
}

4.测试代码,注意MybatisSqlSessionFactoryBuilder ,替换 SqlSessionFactoryBuilder ,这样创建的sqlsession就会有mybatis-plus的一些默认方法,否则不改的话还是用的是mybatis原生的方法。

 public SqlSessionFactory getSqlSessionFactory() throws IOException {
        // 1.加载核心配置文件
        InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        // 2.读取配置文件的内容
        MybatisSqlSessionFactoryBuilder builder = new MybatisSqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = builder.build(inputStream);
        return sqlSessionFactory;
    }
    @Test
    public void test() throws IOException {
        System.out.println(("----- selectAll method test 测试查询所有用户方法 ------"));
        SqlSession sqlSession = this.getSqlSessionFactory().openSession();
        //selectList 的参数wrapper 是条件构造器,可以先写null
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.selectList(null);
        //forEach 的参数是 Consumer类型的 语法糖
        userList.forEach(System.out::println);
    }

5.运行错误,此时运行可能会包没有类发现的错误springframework的错误,只需要再pom文件中添加上springframework的引用就好了


至此,单独使用mybatis-plus就介绍完毕,也说明了为啥mybatis-plus官网没有直接单独使用的mybatis-plus的说明了。



为什么只改了下MybatisSqlSessionFactoryBuilder ,基本就可以实现转化到plus呢,看看源码

public class MybatisSqlSessionFactoryBuilder extends SqlSessionFactoryBuilder {
    public MybatisSqlSessionFactoryBuilder() {
    }
    public SqlSessionFactory build(Reader reader, String environment, Properties properties) {
        SqlSessionFactory var5;
        try {
            MybatisXMLConfigBuilder parser = new MybatisXMLConfigBuilder(reader, environment, properties);
            var5 = this.build(parser.parse());
        } catch (Exception var14) {
            throw ExceptionFactory.wrapException("Error building SqlSession.", var14);
        } finally {
            ErrorContext.instance().reset();
            try {
                reader.close();
            } catch (IOException var13) {
            }
        }
        return var5;
    }
    public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {
        SqlSessionFactory var5;
        try {
            MybatisXMLConfigBuilder parser = new MybatisXMLConfigBuilder(inputStream, environment, properties);
            var5 = this.build(parser.parse());
        } catch (Exception var14) {
            throw ExceptionFactory.wrapException("Error building SqlSession.", var14);
        } finally {
            ErrorContext.instance().reset();
            try {
                inputStream.close();
            } catch (IOException var13) {
            }
        }
        return var5;
    }
    public SqlSessionFactory build(Configuration configuration) {
        GlobalConfig globalConfig = GlobalConfigUtils.getGlobalConfig(configuration);
        Object identifierGenerator;
        if (null == globalConfig.getIdentifierGenerator()) {
            identifierGenerator = new DefaultIdentifierGenerator();
            globalConfig.setIdentifierGenerator((IdentifierGenerator)identifierGenerator);
        } else {
            identifierGenerator = globalConfig.getIdentifierGenerator();
        }
        IdWorker.setIdentifierGenerator((IdentifierGenerator)identifierGenerator);
        if (globalConfig.isEnableSqlRunner()) {
            (new SqlRunnerInjector()).inject(configuration);
        }
        SqlSessionFactory sqlSessionFactory = super.build(configuration);
        globalConfig.setSqlSessionFactory(sqlSessionFactory);
        return sqlSessionFactory;
    }
}

代码和mybatisplus没有啥区别,都是build方法创建SqlsessionFactory,点进去可以直接到mybatis源码中,说明创建的是mybais对象

扫描二维码推送至手机访问。

版权声明:本文由码农翻生发布,如需转载请注明出处。

本文链接:https://lubojian.cn/post/165.html

分享给朋友:
返回列表

上一篇:若依 ry-vue 改造成mybatis-plus

没有最新的文章了...

相关文章

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。