spring boot整合mybatis+mybatis plus--zcc

创建项目

使用idea创建spring boot项目

项目结构如下图所示
在这里插入图片描述

项目基本依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

可以在项目创建过程中选择必须的依赖,项目创建完成后,所选择的依赖如下:

在application.yml文件配置数据源

spring:
  datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    url: jdbc:p6spy:mysql://localhost:3306/feeling?serverTimezone=Asia/Shanghai
    username: root
    password: root
    dbcp2:
      # 当这个池被启动时初始化的创建的连接个数,起始生效版本:1.2
      initial-size: 10
      # 可以在这个池中同时被分配的有效连接数的最大值,如设置为负数,则不限制
      max-total: 5
      # 可以在池中保持空闲的最大连接数,超出设置值之外的空闲连接将被回收,如设置为负数,则不限制
      max-idle: 5
      # (如果没有可用连接)池在抛出异常前等待的一个连接被归还的最大毫秒数,设置为-1则等待时间不确定
      max-wait-millis: 5000
      # 可以在池中保持空闲的最小连接数,超出设置值之外的空闲连接将被创建,如设置为0,则不创建
      min-idle: 2

整合mybatis-plus

添加依赖

 <!--mybatis-puls-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1.tmp</version>
        </dependency>

配置

在spring boot项目启动类(或者其它项目配置类中)中添加mapper包扫描@MapperScan("com.zcc.feeling.mapper")

@SpringBootApplication
@MapperScan("com.zcc.feeling.mapper")
public class FeelingApplication {

    public static void main(String[] args) {
        SpringApplication.run(FeelingApplication.class, args);
    }

}

使用示例

创建实体类

此处创建实体类借助了lombok插件

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
public class User {

    @TableId(type = IdType.AUTO)
    private Long userId;
    private String username;
    private String password;
    private Gender gender;
    private Date createDate;
}

创建mapper

public interface UserMapper extends BaseMapper<User> {
   
}

测试

测试基类

@SpringBootTest
public class FeelingApplicationTests  {
    
    @Autowired
    protected UserMapper userMapper;

}

测试类

此处,测试类继承测试基类,依赖注入在测试基类中实现.

public class UserMapperTest extends FeelingApplicationTests {

        private static final Logger log= LoggerFactory.getLogger(UserMapperTest.class);

        @Test
        public void testSelectById(){
            User user = userMapper.selectById(1L);
            System.out.println(user);
        }

    @Test
    public void testInsertUser(){
       User user=new User();
       user.setUsername("rose");
       user.setPassword("123456");
       user.setGender(Gender.FEMALE);
       user.setCreateDate(new Date());
       userMapper.insert(user);
    }
}

枚举处理

枚举类如下:

public enum Gender {
    MALE(0,"男"),FEMALE(1,"女");

    @EnumValue
    private Integer code;
    private String desc;

    private Gender(Integer code,String desc){
        this.code=code;
        this.desc=desc;
    }

    @Override
    public String toString() {
        return this.desc;
    }
}

在application.yml文件中配置枚举转换

mybatis-plus:
  type-enums-package: com.zcc.feeling.domain.enums

此处只展示一种处理方式,其它处理方式详见mybatis-plus官网文档.
mybatis-plus枚举处理

整合mybatis

添加依赖

需要特别注意的是,如果已经添加了mybatis-plus的依赖,则此处不用再添加mybatis依赖mybatis与spring 整合依赖

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version>
</dependency>
<!--mybatis与spring 整合依赖-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.2</version>
</dependency>

配置

在application.yml文件中添加别名配置

mybatis-plus:
  type-aliases-package: com.zcc.feeling.domain

注意:如果在测试过程中出现mapper.xml文件无法映射的问题,再排除其他可能之后,可以在application.yml文件中配置mapper文件映射.

mybatis-plus:
  #加载mapper映射文件
  mapper-locations: classpath:mapper/*Mapper.xml

使用示例

实体类

由于是在mybatis plus的基础上使用mybatis,所以此处实体类仍然使用之前的User实体类.

mapper

我们可以直接在mapper中添加自定义的方法接口(以下代码只是示例,此方法完全可以依靠mybatis plus自带方法实现).

public interface UserMapper extends BaseMapper<User> {
    User selectUserByNameAndPwd(@Param("name") String username, @Param("pwd") String password);
}

mapper.xml

在spring boot项目中,我们建议是将mapper映射文件放到resources文件夹下,便于管理.

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用
namespace为接口路径
-->
<mapper namespace="com.zcc.feeling.mapper.UserMapper">


    <select id="selectUserByNameAndPwd" resultType="user">
        select *from user where username=#{name} and password=#{pwd};
    </select>
</mapper>

测试

 @Test
    public void testSelectUserByNameAndPwd(){
        User user = userMapper.selectUserByNameAndPwd("rose", "123456");
        System.out.println(user);
    }

其它额外配置

添加日志

引入依赖

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

添加日志记录文件

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

# 设置日志输出级别DEBUG,INFO,WARN,ERROR,FATAL
# 把日志输出在控制台上
log4j.rootLogger=warn, stdout

添加p6spy

引入依赖

 <!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
        <dependency>
            <groupId>p6spy</groupId>
            <artifactId>p6spy</artifactId>
            <version>3.8.5</version>
        </dependency>

添加spy.properties文件

#p6spy\u7528\u6765\u63A2\u6D4B\u751F\u6210\u7684SQL\u8BED\u53E5\u4E2D\u7684?\u7684\u771F\u5B9E\u503C

driverlist=com.mysql.cj.jdbc.Driver
#在控制台多行打印
logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
#在控制台单行打印
#logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat

databaseDialectDateFormat=yyyy-MM-dd HH:mm:ss

appender=com.p6spy.engine.spy.appender.StdoutLogger

修改数据源配置

spring:
  datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    url: jdbc:p6spy:mysql://localhost:3306/feeling?serverTimezone=Asia/Shanghai
    username: root
    password: root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值