springboot项目底层集成jpa规范与mybatis

本文介绍如何在SpringBoot项目中结合JPA规范和Mybatis进行多表操作。首先简述JPA在单表操作上的优势,然后详细说明如何引入Mybatis并配置Mapper。通过@MapperScan注解指定Mapper接口位置,编写继承CrudRepository的Mapper接口,并使用@Select进行自定义查询。需要注意接口命名规范,避免出现意外问题。最后通过Controller验证整合效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    你我共知,jpa规范是基于hibernate的,对于单表操作的时候是非常的方便,但是对于多表操作的时候未免有点力不从心,于是在闲暇之余,自己做了一个小小的测试,集成mybatis。当然集成jpa规范在上篇博客中已经有了很详细的解说。如果有想要了解的请看我的上篇博客。

    这篇博客的前提是建立在上篇博客的,于是那些个数据库的配置我也就不强调了。

    第一步,引入mybatis的相关jar

    

<!--====================mybatis基础配置=============================================-->
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>6.0.6</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.1</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>5.1.2</version>
		</dependency>

接下来就是简单的写mapper的配置了。

不过这其中有个注意的小点就是在启动类上面添加mapper的扫描。@MapperScan注解后面跟随mapper文件的具体位置。

紧接着就是写Mapper接口。

public interface DemoMapper extends CrudRepository<Demo,Long>{
    @Select("select * from Demo where name =#{name}")
    public List<Demo> findByName(String name);

    @Select("select * from Demo where id=#{id}")
    public Demo getById(long id);

    @Select("select name from Demo where id=#{id}")
    public String getNameById(long id);
}

这个接口中继承了Jpa规范中的CrudRepository接口,其次是使用@Select注解写了一些额外的mybatis查询接口。写的比较简单,只是做个示例。

这里有个小小的坑,就是在命名接口的时候尽量用find这种常见的,其次By后面跟随实体的属性名,不要多也不要少,否则会有彩蛋的。

最后就是写了一个很简单的Controller来验证它。

@RestController
@RequestMapping("/demo")
public class DemoController {
    @Autowired
    private DemoMapper demoMapper;

    @RequestMapping("findByName")
    public List<Demo> findByName(String name){
        return demoMapper.findByName(name);
    }

    @RequestMapping("add")
    public Integer add(){
        Demo demo = new Demo();
        demo.setName("demo");
        demoMapper.save(demo);
        return demo.getId();
    }
}
这样底层就有了两种,各取其长。


    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值