zoukankan      html  css  js  c++  java
  • Mybatis插件之Mybatis-Plus(传统模式)

    1、什么是Mybatis-Plus

    Mybatis-Plus(简称MP),是一个Mybatis的增强工具,可以在原来Mybatis基础上不错任何改变就能够对原来Mybatis进行增强,能够简化我们的开发,提高开发效率。

    官网1https://mybatis.plus/

    官网2https://mp.baomidou.com/

    2、特性:

    a)       无侵入:引入不会对现有工程产生影响,只做增强不做改变

    b)       损耗小:启动即会自动注入基本的CRUD,性能基本无损耗,直接面向对象操作

    c)        强大的CRUD操作:内置通用Mapper、通用Service,仅仅通过少量配置即可实现单表的大部分CRUD操作。

    d)       支持Lambda形式调用

    e)       支持多种数据库

    f)         支持主键自动生成:4种主键策略,内含分布式唯一ID生成器-Sequence

    g)       支持XML热加载(类似于热部署)

    h)       支持ActiveRecord模式

    i)         支持自定义全局通用操作

    j)         支持关键词自动转义

    k)        内置代码生成器:

    l)         内置分页插件

    m)     内置性能分析插件

    n)       内置全局拦截插件

    o)       内置sql注入剥离器:有效预防sql注入的攻击

    3、框架架构

    开始测试使用(Mybatis查询所有用户):

    MySQL表结构:

    1、项目结构如下:

    2、父模块的依赖(pom.xml

    <dependencies>
        <!--1、mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.1.1</version>
        </dependency>
        <!--2、mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>
        <!--3、druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.20</version>
        </dependency>
        <!--4、简化bean代码-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
        </dependency>
        <!--5、单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--6、日志记录-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.6</version>
        </dependency>
    </dependencies>
    
    <build>
        <!--插件-->
        <plugins>
            <!--指定编译的版本-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    子模块:

    3、日志文件的配置如下:

    log4j.rootLogger=DEBUG,CONSOLE
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=[%t]  [%c]-[%p]  %m%n

    4、数据源配置如下:

    db.url=jdbc:mysql:///chw?CharacterEncoding=utf8
    db.username=root
    db.password=root
    db.driver=com.mysql.jdbc.Driver

    5、Mybatis核心配置文件如下:

    <?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>
        <!--1.引入外部properties配置文件-->
        <properties resource="db.properties" />
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="${db.driver}"/>
                    <property name="url" value="${db.url}"/>
                    <property name="username" value="${db.username}"/>
                    <property name="password" value="${db.password}"/>
                </dataSource>
            </environment>
        </environments>
        <!--mapper文件的路径-->
        <mappers>
            <mapper resource="mapper/UserMapper.xml"/>
        </mappers>
    </configuration>

    6、实体类(User)信息如下:

    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.ToString;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @ToString
    @TableName("tb_user")
    public class User {
        @TableId(type = IdType.AUTO) // 需要指定,否则无法新增后拿到回调的id,以及进行删除等操作
        private Integer uid;
        private String uname;
        private Integer age;
    }

    7、接口(UserMapper)信息如下:

    public interface UserMapper {
        List<User> findAll();
    }

    8、mapper.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.jieku.mapper.UserMapper">
        <select id="findAll" resultType="com.jieku.pojo.User">
        select * from tb_user
        </select>
    </mapper>

    9、测试类代码如下:

    public class TestMybatis {
        @Test
        public void test01() throws IOException {
            // 1.配置文件的路径
            String config = "mybatis/mybatis-config.xml";
            // 2.加载资源
            InputStream inputStream = Resources.getResourceAsStream(config);
            // 3.通过配置文件的资源得到SqlSessionFactory对象
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            // 4.通过SqlSessionFactory对象得到SqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            // 5.通过SqlSession对象拿到定义的接口信息
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            // 6.调用我们定义的方法
            List<User> all = mapper.findAll();
            // 7.遍历打印结果
            for (User user : all) {
                System.out.println(user);
            }
        }
    }

    10、 运行结果:

     

    MybatisMybatisPlus整合查询如下(在以上的基础上):

    第一步:继承BaseMapper<T>接口,泛型表示实体类的类型,如图:

    第二步:给实体类加上表名的注解(@TableName),如图:

    如果没有加上,则会抛出异常:

     

    第三步:修改测试方法中SqlSessionFactory的实例对象,如图:

    第四步:测试结果如下图:

    Spring + Mybatis + Mybatis-Plus 实现用户查询:

    1、 新建子模块(spring-mp):

    2、导入依赖(pom.xml)

        <!--Spring版本锁定-->
        <properties>
            <spring-version>5.1.6.RELEASE</spring-version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <!--测试-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <!--mysql驱动包-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
            <!--Druid数据源-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.20</version>
            </dependency>
        </dependencies>

    3、数据源

    4、日志配置

    5、Spring核心配置文件(applicationContext.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans.xsd 
           http://www.springframework.org/schema/context 
           http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--1.加载外部配置文件-->
        <context:property-placeholder location="classpath*:*.properties" />
        <!--2.配置数据源-->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="${db.driver}" />
            <property name="url" value="${db.url}" />
            <property name="username" value="${db.username}" />
            <property name="password" value="${db.password}" />
        </bean>
        <!--3.这里使用的是Mabatis-Plus的sqlsession工厂-->
        <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
        </bean>
        <!--4.扫描Mapper接口,使用的依然是Mybatis原生的扫描器-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.jieku.mapper" />
        </bean>
    </beans>

    6、用户实体类(User)

    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.ToString;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @ToString
    @TableName("tb_user")
    public class User {
        private Integer uid;
        private String uname;
        private Integer age;
    }

    7、UserMapper类

    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.jieku.pojo.User;
    
    public interface UserMapper extends BaseMapper<User> {
    
    }

    8、测试类

    import com.jieku.mapper.UserMapper;
    import com.jieku.pojo.User;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import java.util.List;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:applicationContext.xml")
    public class TestSpringMP {
        @Autowired  // 自动装配一个对象
        private UserMapper userMapper;  // 代理
    
        @Test
        public void test01(){
            List<User> users = userMapper.selectList(null);
            for (User user : users) {
                System.out.println(user);
            }
        }
    }

    9、执行结果

    至此,测试完成!

  • 相关阅读:
    性能测试随笔,看看罢了,只做笑谈尔。
    谈性能指标测试
    协议初解
    LR手工制作接口类脚本
    一天学一个模式_第五天:门面模式
    Oracle日常操作小常识(持续更新)
    什么是“GB/T ”? 计算机术语你又知道多少? 想不想别人听不懂的语言搞定别人!
    Silverlight 4 Tools for VS 2010 发布倒计时
    微软一站式示例代码库 4 月小结
    微软一站式示例代码库 20100430 新增代码示例简介
  • 原文地址:https://www.cnblogs.com/Nickc/p/11995305.html
Copyright © 2011-2022 走看看