spring Boot学习笔记(通用Mapper的使用)

使用Mybatis框架编写持久层代码时,有时我们只需要单表的操作,这样就会产生一些机械重复的工作,而通用Mapper的出现帮我们解决了这个问题。
我使用的通用Mapper是abel533写的Github这个框架提供了极其方便的MyBatis单表的增删改查,可以让我们不必在单表操作的编写上浪费多少时间。
通用Mapper的使用步骤
1.要使用通用Mapper需要先导入依赖

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.0.3</version>
</dependency>

2.编写配置文件
在resource目录下新建application.properties文件

#服务器相关配置
server.port=80
server.servlet.context-path=/learn
#数据库连接信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/数据库名
spring.datasource.username=root
spring.datasource.password=****

3.编写启动类

package com.learn;
//声明该注解是springboot的引导类
@SpringBootApplication
@MapperScan("com.learn.mapper")//注册通用mapper
public class MySpringBootApplication {

    //main方法是程序的入口
    public static void main(String[] args) {
        //run方法,表示运行SpringBoot的引导类,参数就是SpringBoot的引导类字节码对象
        SpringApplication.run(MySpringBootApplication.class);

    }
}

4.编写实体类

package com.learn.domain;
/**
 * User实体类
 */
//告知通用Mapper要对哪张表进行操作
@Table(name = "user")
public class User implements Serializable {
    //告知通用Mapper此属性对应表中的主键
    @Id
    //告知通用Mapper此属性是自增长的
    @KeySql(useGeneratedKeys = true)
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
    //忽略此属性,不作为查询条件
    @Transient
    private String test;
}

5.新建UserMapper

package com.learn.mapper;
public interface UserMapper extends Mapper<User> {
    //Mapper只需要继承tk.mybatis.mapper.common.Mapper<T>这个接口,通用Mapper就会自动帮我们生成Mybatis的单表的增删改查。
}

到这里通用Mapper就编写完了,是不是特别方便快捷,下面我们来测试一下这些方法。
5.编写测试类

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MySpringBootApplication.class)
public class UserMapper2Test {

    @Autowired
    private UserMapper2 userMapper2;

    //因为我懒,这里只写了一个根据主键查询,和一个根据User对象中的非空属性查询
    @Test
    public void TestMethod(){
        int id = 41;
        String username = "老王";
        User user = userMapper2.selectByPrimaryKey(id);
        User user2 = new User();
        user2.setUsername(username);
        //根据User的非空属性查询
        User user1 = userMapper2.selectOne(user2);
        System.out.println(user1);
        System.out.println(user);
    }
}

我自己还编写了service来测试事务,事务的使用方式和之前一样,只需要再方法上加@Transactional注解即可。

原文地址:https://www.cnblogs.com/lazy-brain/p/12774237.html