(转)Spring项目整合MyBatis-Plus

目录
1、简介
2、项目整合
2.1、MyBatis的配置
2.2、MyBatis-Plus配置
1、简介
MyBatis-Plus 是基于Mybatis的一个工具,它是对MyBatis的增强,在其基础上只进行增强,不进行改变,是为了简化MyBatis开发,提高效率而研发的。

它基于MyBatis 在 Mapper 接口和 Servcie 接口上进行了封装,我们只需要在Mapper接口、Service接口上继承封装的相关接口,即可在没有写任何映射方法的时候,直接使用一些简单的 CRUD 等SQL操作。

MyBatis-Plus网站


无侵入:在MyBatis基础上只做增强不做改变,引入它不会对现有工程产生影响。
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作。
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作


2、项目整合
2.1、MyBatis的配置
mybatis-config.xml配置文件

<?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>
    <!--setting设置-->
    <settings>
        <!--日志STDOUT_LOGGING和LOG4J-->
        <setting name="logImpl" value="LOG4J"/>
    </settings>

    <!--设置别名 -->
    <typeAliases>
        <package name="com.yu.mybatisplustest.entity"/>
    </typeAliases>
</configuration>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Spring-config.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--包的扫描-->
    <context:component-scan base-package="com.yu.mybatisplustest"/>

    <!--支持 @Resource等注解-->
    <context:annotation-config/>

    <!--导入数据文件database.properties-->
    <context:property-placeholder location="classpath:database.properties"/>

    <!--配置druid 连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!--初始连接数-->
        <property name="initialSize" value="${jdbc.initialSize}"/>
        <!--最小空闲连接数-->
        <property name="minIdle" value="${jdbc.minIdle}"/>
        <!--最大活动连接数-->
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <!--最大等待时间-->
        <property name="maxWait" value="${jdbc.maxWait}"/>
        <property name="filters" value="${jdbc.filters}"/>
    </bean>

    <!--配置sqlSessionFactory工厂-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--加载连接池-->
        <property name="dataSource" ref="dataSource"/>
        <!--加载mybatis配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!--加载映射文件路径-->
        <property name="mapperLocations" value="classpath:mapping/*.xml"/>
    </bean>

    <!--扫描的mapper接口(也可以使用@Mapper或@MapperScan)-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--扫描mapper接口所在的包-->
        <property name="basePackage" value="con.yu.ssmtest.mapper"/>
    </bean>

</beans>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
log4j日志

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file
#控制台输出的相关设置
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] [%c] [%p] -%m%n
#文件输出的相关设置
#log4j.appender.file = org.apache.log4j.RollingFileAppender
#log4j.appender.file.File=
#log4j.appender.file.MaxFileSize=10mb
#log4j.appender.file.Threshold=DEBUG
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] [%c] [%p] -%m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
实体类

@Data
public class User {
    private Integer userId;
    private String username;
    private String password;
    private Boolean deleted;
}
1
2
3
4
5
6
7
Mapper接口和XML映射文件

public interface UserMapper {
    User selectByPrimaryKey(Integer userId);
}
1
2
3
<?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.yu.ssmtest.mapper.UserMapper">
      <resultMap id="BaseResultMap" type="com.yu.ssmtest.entity.User">
        <id column="user_id" jdbcType="INTEGER" property="userId" />
        <result column="username" jdbcType="VARCHAR" property="username" />
        <result column="password" jdbcType="VARCHAR" property="password" />
        <result column="deleted" jdbcType="BIT" property="deleted" />
      </resultMap>
      <sql id="Base_Column_List">
        user_id, username, `password`, deleted
      </sql>

      <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
        <!--@mbg.generated-->
        select 
        <include refid="Base_Column_List" />
        from `user`
        where user_id = #{userId,jdbcType=INTEGER}
      </select>
</mapper>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
测试

@SpringJUnitConfig(locations = {"classpath:applicationContext.xml"})
public class SsmTest {
    @Resource
    private UserMapper userMapper;
    
    @Test
    public  void  test(){
        User user = userMapper.selectByPrimaryKey(1);
        System.out.println(user);
    }
}
1
2
3
4
5
6
7
8
9
10
11


2.2、MyBatis-Plus配置
使用Spring整合MyBatis-Plus,原来的Mybatis配置只需要极少的更改就可以直接使用了,但是在导入依赖后需要去掉 原来的MyBatis以及Spring整合MyBatis的依赖,否则可能会出现版本冲突,因为MyBatis-Plus的依赖会自动导入mybatis的两个依赖。

MyBatis-Plus3基于JDK8及其以上版本,并提供了 lambda 形式的调用。

<!--mybatis-plus 依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.4.2</version>
</dependency>
1
2
3
4
5
6


既然MyBatis-Plus 是在mybatis的基础进行增强的,那么自然不需要过多的更改mybatis的配置,基本上只需要更改配置 的sqlSessionFactory工厂 即可使用。

而 MyBatis-Plus 在使用时最大的改变是它提供的 BaseMapper 接口,内部封装了很多 CURD 的相关操作,这样我们就不用编写 方法映射 和 SQL 相关代码,即可使用大部分的 CURD 操作。

mybatis-config.xml配置文件不需要更改

Spring-config.xml配置:只需要将mybatis里的 sqlSessionFactory工厂更改为MyBatis-Plus的即可,其余的不变

org.mybatis.spring.SqlSessionFactoryBean 更改为 com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean

<!--配置Mybatis-plus的-->
<bean class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    <!--加载连接池-->
    <property name="dataSource" ref="dataSource"/>
    <!-- 设置MyBatis配置文件的路径(可以不设置) -->
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
    <!--加载映射文件路径-->
    <property name="mapperLocations" value="classpath:mapping/*.xml"/>
</bean>
1
2
3
4
5
6
7
8
9
log4j日志 不变

实体类:这里需要注意一下,因为需要使用BaseMapper 内置的方法,所以需要在主键上添加一个注解 @TableId,来表示该属性对应主键ID,防止在使用时出现: Invalid bound statement (not found) 异常。

@Data
public class User {
    @TableId
    private Integer userId;
    private String username;
    private String password;
    private Boolean deleted;
}
1
2
3
4
5
6
7
8
Mapper接口和XML映射文件:在MyBatis-Plus 中提供了一个接口 BaseMapper,这个接口封装了一些简单的CRUD 操作,只需要用 mapper 接口继承 BaseMapper 后,一个方法不用映射也可以实现 CRUD的操作


public interface UserMapper extends BaseMapper<User> {
}
1
2
<?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.yu.mybatisplustest.mapper.UserMapper">

</mapper>
1
2
3
4
5
测试:在 mapper接口和映射文件不创建任何映射方法,测试查询

@SpringJUnitConfig(locations = {"classpath:applicationContext.xml"})
public class MybatisplusTest {
    @Resource
    private UserMapper userMapper;

    @Test
    public void test2(){
        //selectById是BaseMapper中封装的方法
        User user = userMapper.selectById(1);
        System.out.println(user);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12


————————————————
版权声明:本文为CSDN博主「辰 羽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yuandfeng/article/details/129660580

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security 是一个开源的安全框架,用于保护基于Spring框架构建的应用程序。MyBatis-Plus 是基于 MyBatis 的增强工具,用于简化 MyBatis 操作和提高开发效率。 将 Spring Security 与 MyBatis-Plus 整合主要包括以下几个步骤: 1. 首先,在 Spring Boot 项目的 pom.xml 文件中添加 Spring Security 和 MyBatis-Plus依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>latest version</version> </dependency> ``` 2. 接下来,在项目的配置文件 application.properties 或 application.yml 中配置数据库连接和 MyBatis-Plus 的相关配置。 3. 创建一个用户实体类和对应的 Mapper 接口,使用 MyBatis-Plus 提供的注解和方法完成数据访问操作。 4. 创建一个自定义的 UserDetailsService 实现类,用于从数据库中获取用户信息,实现 loadUserByUsername 方法。 5. 创建一个自定义的 PasswordEncoder 实现类,用于加密和校验用户密码。 6. 配置 Spring Security,创建一个继承自 WebSecurityConfigurerAdapter 的类,并重写 configure 方法,设置用户认证规则、登录配置和访问控制规则。 7. 在 Spring Boot 启动类上使用 @MapperScan 注解,扫描 Mapper 接口。 通过以上步骤,就可以实现 Spring Security 与 MyBatis-Plus整合。在实际应用中,还可以根据具体需求进行一些其他配置和扩展,例如添加角色权限控制、自定义登录页面和处理逻辑等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值