SpringBoot项目使用通用Mapper
我们在使用mybatis框架操作数据库的时候,通常是需要在xml映射文件中或者方法上使用注解的格式编写sql语句,需要我们自己手动去编写,当我们使用通用mapper,就不需要我们手动编写sql语句。极其方便的使用mybatis单表的增删查改,可以减少我们的代码量,提高我们的开发效率。通用Mapper可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法。
通用Mapper也有一定的局限性,就是只支持单表操作,不支持多表联合查询。多表联查的复杂的sql语句还是需要自己手动在xml或者注解上编写。
官网:https://mapperhelper.github.io/docs/
引入相关依赖
<!-- JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MySQL 驱动包-->
<!--MySQL Server 版本为 8.x时,mysql-connector-java使用5.1.35时会报错-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
application.yml配置文件
server:
port: 9999
spring:
datasource:
#通用配置
driver-class-name: com.mysql.jdbc.Driver
password: root
username: root
url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&charcterEncoding=UTF-8&useSSL=false
#数据源连接池配置
hikari:
minimum-idle: 10
maximum-pool-size: 20
idle-timeout: 500000
max-lifetime: 540000
connection-timeout: 60000
connection-test-query: select 1
# 指定mybatis的配置文件和mapper文件存放地址
mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml
启动类
@SpringBootApplication
//@MapperScan扫描mybatis所有的业务mapper接口,就不需要在mapper接口上使用@Mapper注解
//注意是tk.mybatis.spring.annotation.MapperScan
@MapperScan("com.harvey.demo.dao.mapper")
public class DemoApp {
public static void main(String[] args) {
SpringApplication.run(DemoApp.class, args);
}
}
注:必须添加@MapperScan,用于扫描Mapper接口,否则不能使用。
实体类、Mapper接口
User.java
@Table(name = "tb_user")
public class User {
//让通用Mapper在执行 insert 操作之后将数据库自动生成的主键值回写到实体类对象中
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "age")
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
UserMapper.java
public interface UserMapper extends Mapper<User> {
}
测试验证
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApp.class)
public class WebSpringTest {
@Autowired
private UserMapper userMapper;
@Test
public void testMybatis() {
//插入数据
User user = new User();
user.setName("白居易");
user.setAge(55);
userMapper.insert(user);
System.out.println("user id = " + user.getId());
List<User> userList = userMapper.selectAll();
for (User userInfo : userList) {
System.out.println("id = " + userInfo.getId() + ", name = " + userInfo.getName() + ", age = " + userInfo.getAge());
}
}
}
标签:
SpringBoot
, 通用Mapper
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!