A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一、mybatis与mybatis-plus
      在众多的持久层框架,mybtis以轻量、灵活、能解除sql与程序代码的耦合及提供动态sql等优点闻名。但mybatis有个让人比较头疼的问题,那就是书写sql工作量大,尤其是字段多的时候。虽然说单表的增删改查操作可以通过mybatis generator工具来生成,但项目开发的过程中总免不了要新添加新字段,这时候就要重新在使用工具生成,把新字段写到原来的所有增删改查的sql中,非常麻烦。
       mybatis的单表操作也是贼麻烦的事,因为筛选的条件会是各种各样,你不得不写很多动态sql来兼容查询条件,让我们不能集中精力去处理业务。这时候你可能就会想起hibernate框架了。Hibernate加字段简单,单表操作也是非常方便。那有没有一种框架是集合了这两个的优点呢?有的,这就是mybatis-plus,在其官网是这样介绍的:
        Mybatis-Plus(简称MP)是一个Mybatis的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
二、mybatis-plus的简单使用
1.创建工程,加入依赖
[XML] 纯文本查看 复制代码
 <properties>
        <!-- mybatis版本号 -->
        <mybatis.version>3.4.5</mybatis.version>
        <!-- mysql版本 -->
        <mysql.version>5.1.30</mysql.version>
        <!-- log4j日志包版本 -->
        <slf4j.version>1.7.7</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
        <!-- junit版本 -->
        <junit.version>4.12</junit.version>
        <!-- mybatis-spring整合包版本 -->
        <mybatis.spring.version>1.3.1</mybatis.spring.version>
        <!--spring 版本-->
        <spring.version>5.0.2.RELEASE</spring.version>
        <!--druid版本-->
        <druid.version>1.0.29</druid.version>
    </properties>

    <dependencies>
        <!--spring依赖包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>2.0.1</version>
        </dependency>
        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- mysql数据库依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <!-- mybatis-spring整合包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis.spring.version}</version>
        </dependency>
        <!-- log4j日志包 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!--数据库连接池druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <!-- junit依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
        </dependency>
        <!--spring tx包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--spring jdbc包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>

2.创建表,插入数据
[SQL] 纯文本查看 复制代码
CREATE TABLE `user` (
   id INT(11) NOT NULL AUTO_INCREMENT,
   username VARCHAR(32) NOT NULL COMMENT '用户名称',
   birthday DATE DEFAULT NULL COMMENT '生日',
   sex CHAR(1) DEFAULT NULL COMMENT '性别',
   address VARCHAR(256) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

3.创建实体类User
加上@TableName,进行映射关联,指定与数据库表的关联,这里的注解意味着你的数据库里应该有一个名为user的表与之对应,并且数据表的列名应该就是User类的属性。
[Java] 纯文本查看 复制代码
package com.mybatis.plus.pojo;

import com.baomidou.mybatisplus.annotations.TableName;

import javax.management.relation.Role;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 用户实体类对象
 */
@TableName("user")
public class User implements Serializable {

    private Integer id;// int(11) NOT NULL AUTO_INCREMENT,
    private String username;// varchar(32) NOT NULL COMMENT '用户名称',
    private Date birthday;// date DEFAULT NULL COMMENT '生日',
    private String sex;// char(1) DEFAULT NULL COMMENT '性别',
    private String address;// varchar(256) DEFAULT NULL COMMENT '地址',

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

注意:如果需要排除某个属性,表示在数据库表中没有对应的字段,可以使用加第二个注解@TableField(exist = false),表示排除User类中的属性.
4.编写配置文件
4.1日志文件log4j.properties
[XML] 纯文本查看 复制代码
# Global logging configuration
log4j.rootLogger=DEBUG, stdout

# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

4.2数据库资源文件db.properties
[XML] 纯文本查看 复制代码
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/test
db.username=root
db.password=root

4.3修改配置文件
将mybatis的sqlSessionFactory替换成mybatis-plus的即可,mybatis-plus只做了一些功能的扩展:
[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">

    <!--加载db.properties属性文件-->
    <context:property-placeholder location="classpath:db.properties"/>

    <!--配置数据源对象-->
    <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>

    <!--配置SqlSessionFactory-->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
        <!--注入数据源对象-->
        <property name="dataSource" ref="dataSource"/>
        <!--加载mybatis主配置文件-->
        <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
        <!--插件配置-->
        <property name="plugins">
            <array>
                <!-- 分页插件配置 -->
                <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
                    <property name="dialectType" value="mysql"/>
                </bean>
            </array>
        </property>
    </bean>


    <!--配置mapper扫描器MapperScannerConfigurer-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--配置要扫描的包,说明:
            1.如果有多个包,在同一个父包,配置父包
            2.不在同一个父包,以半角逗号进行分割
        -->
        <property name="basePackage" value="com.mybatis.plus.dao"/>
    </bean>

</beans>


5.创建UserMapper
[Java] 纯文本查看 复制代码
public interface UserMapper extends BaseMapper<User> {
}
6.编写测试类
[Java] 纯文本查看 复制代码
package com.mybatis.plus.demotest;

import com.mybatis.plus.dao.UserMapper;
import com.mybatis.plus.pojo.User;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


/**
 * Date:2019/1/24
 * Author:JianHui Wu a developer of java
 * Desc:
 */
public class TestMyBatisPlus {

    private ApplicationContext applicationContext;

    @Before
    public void setUp(){
        applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext-dao.xml");

    }
    @Test
    public void testPlus(){
        UserMapper userMapper =(UserMapper) applicationContext.getBean("userMapper");
        User user=new User();
        user.setSex("0");
        user.setUsername("jujo");
        userMapper.insert(user);
        System.out.println(userMapper);
    }
}



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马