【Spring整合MyBatisPlus】简单代码示例

Spring整合MyBatisPlus

创建maven项目,引入依赖


<dependencies>
    <!-- mp依赖 mybatisPlus 会自动的维护Mybatis 以及MyBatis-spring相关的依赖 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus</artifactId>
        <version>3.3.1.tmp</version>
    </dependency>

    <!-- Lombok工具 -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
    </dependency>

    <!-- Spring-test测试 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>5.3.3</version>
        <scope>test</scope>
    </dependency>

    <!-- slf4j日志包 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </dependency>

    <!-- druid阿里的数据库连接池 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.10</version>
    </dependency>

    <!-- mysql -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.10.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>4.3.10.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>RELEASE</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

数据表结构
在这里插入图片描述
对应数据表,创建实体类


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.io.Serializable;
import java.util.Date;


@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName(value="user")//建立User.class和数据的user表的关系
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    //字段名和表中的名字一样时可以不加以下注解,不同时需要加上该注解
    @TableId(value="user_id")  //代表它是主键
    private Integer user_id;
    @TableField(value="name")
    private String name;
    @TableField(value="borthday")
    private Date borthday;
    /**
     * 不映射数据库表中任何字段
     */
    @TableField(exist = false)
    private String address;
}

创建UserMapper接口


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.bean.User;

public interface UserMapper extends BaseMapper<User> {
}

创建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.example.mapper.UserMapper" >

</mapper>

创建log4j配置文件


log4j.rootLogger=DEBUG, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

创建jdbc-config.properties配置文件

jdbc.username: root
jdbc.password: root
jdbc.url: jdbc:mysql://localhost:3306/mybatis_test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
jdbc.driver: com.mysql.cj.jdbc.Driver

创建application-dao.xml配置文件,其中主要是dao部分的配置


<?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">

    <!-- 配置数据源-->
    <context:property-placeholder location="classpath:jdbc-config.properties" system-properties-mode="FALLBACK" />
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>


    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="globalConfig" ref="globalConfig"></property>
        <!-- 加载xxMapper.xml -->
        <property name="mapperLocations">
            <array>
                <value>classpath:mapper/*Mapper.xml</value>
            </array>
        </property>
        <!-- 配置分页插件 -->
        <property name="plugins">
            <array>
                <bean class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"></bean>
            </array>
        </property>
    </bean>

    <!-- 声明全局配置 -->
    <bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
        <!-- 指定主键自动增长类型 -->
        <property name="dbConfig" ref="dbConfig"></property>
    </bean>

    <bean id="dbConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
        <property name="idType" value="AUTO"></property>
    </bean>


    <!-- 将MapperScannerConfigurer类注入到IOC容器,给参数赋值-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 需要生成代理类对象的mapper接口包 -->
        <property name="basePackage" value="com.example.mapper"></property>
        <!-- sqlSessionFactory 的name 用于为代理类中生成SqlSession -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>
</beans>

创建spring全局配置文件,引入各部分配置文件


<?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">

    <!-- 引入dao层的配置 -->
    <import resource="classpath:application-dao.xml"/>
</beans>

编写测试代码


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.bean.User;
import com.example.mapper.UserMapper;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.Serializable;
import java.util.*;

import static jdk.nashorn.internal.objects.Global.print;

public class StringApplication {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        UserMapper userMapper = context.getBean(UserMapper.class);

//        updateUser(userMapper);
//        deleteUser(userMapper);
    }

    // 修改数据
    private static void updateUser(UserMapper userMapper){
        //根据主键修改
        userMapper.updateById(new User(112,"小荥荥",new Date(),"北京"));

        UpdateWrapper<User> updateWrapper=new UpdateWrapper<>();
        updateWrapper.eq("name","小荥荥");
        updateWrapper.between("user_id",1,5);

        userMapper.update(new User(112,"小荥",new Date(),"武汉"),updateWrapper);
    }

    // 删除数据
    private static void deleteUser(UserMapper userMapper){
        //根据主键删除
        userMapper.deleteById(1);
        //批量删除。先放到一个集合里面,然后删除
        Collection<Serializable> idList=new ArrayList<Serializable>();
        idList.add(22);
        idList.add(112);
        userMapper.deleteBatchIds(idList);
        //根据map集合进行删除
        Map<String,Object> columnMap=new HashMap<String,Object>();
        columnMap.put("user_id",6);
        columnMap.put("name","小明");
        userMapper.deleteByMap(columnMap);
        //根据wrapper进行删除
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        userMapper.delete(wrapper);
    }

    // 将需要的数据放到一个List集合里面进行查询
    private static void query2(UserMapper userMapper){
        //先放到一个集合里面,最后进行查询
        Collection<Serializable> idList=new ArrayList<Serializable>();
        idList.add(2);
        idList.add(3);
        idList.add(4);
        List<User> list=userMapper.selectBatchIds(idList);
        print(list);
    }

    // 将需要的数据放到一个Map集合里面进行查询
    private static void query3(UserMapper userMapper){
        Map<String,Object> columnMap=new HashMap<>();
        columnMap.put("name","小荥");
        columnMap.put("address","南阳");
        List<User> list=userMapper.selectByMap(columnMap);
        print(list);
    }

    // 根据Id进行查询
    private static void query1(UserMapper userMapper){
        User user=userMapper.selectById(3);
        System.out.println(user);
    }

    // 根据姓名进行查询
    private static void query4(UserMapper userMapper,String name){
        Integer count=userMapper.selectCount(null);
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.like(name!=null,"name",name);
        Integer selectCount=userMapper.selectCount(queryWrapper);
        System.out.println(selectCount);
    }

    // 分页插件
    private static void query5(UserMapper userMapper){
        IPage<User> page=new Page<User>(1,2);
        userMapper.selectPage(page,null);
        long total=page.getTotal();
        System.out.println("总条数:"+total);
        List<User> list=page.getRecords();
        print(list);
    }
}

小李子整体结构如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值