`
liujiekasini0312
  • 浏览: 147597 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring Boot中使用MyBatis注解配置详解

 
阅读更多

之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见的情况举例说明用法。

在做下面的示例之前,先准备一个整合好MyBatis的工程,可参见Spring Boot整合MyBatis,也可直接使用整合好的样例:Chapter3-2-7

传参方式

下面通过几种不同传参方式来实现前文中实现的插入操作。

使用@Param

在之前的整合示例中我们已经使用了这种最简单的传参方式,如下:

1
2
@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})")
int insert(@Param("name") String name, @Param("age") Integer age);

这种方式很好理解,@Param中定义的name对应了SQL中的#{name}age对应了SQL中的#{age}

使用Map

如下代码,通过Map对象来作为传递参数的容器:

1
2
@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER})")
int insertByMap(Map<String, Object> map);

对于Insert语句中需要的参数,我们只需要在map中填入同名的内容即可,具体如下面代码所示:

1
2
3
4
Map<String, Object> map = new HashMap<>();
map.put("name", "CCC");
map.put("age", 40);
userMapper.insertByMap(map);

使用对象

除了Map对象,我们也可直接使用普通的Java对象来作为查询条件的传参,比如我们可以直接使用User对象:

1
2
@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})")
int insertByUser(User user);

这样语句中的#{name}#{age}就分别对应了User对象中的nameage属性。

增删改查

MyBatis针对不同的数据库操作分别提供了不同的注解来进行配置,在之前的示例中演示了@Insert,下面针对User表做一组最基本的增删改查作为示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public interface UserMapper {
@Select("SELECT * FROM user WHERE name = #{name}")
User findByName(@Param("name") String name);
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
int insert(@Param("name") String name, @Param("age") Integer age);
@Update("UPDATE user SET age=#{age} WHERE name=#{name}")
void update(User user);
@Delete("DELETE FROM user WHERE id =#{id}")
void delete(Long id);
}

在完成了一套增删改查后,不妨我们试试下面的单元测试来验证上面操作的正确性:

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
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@Transactional
public class ApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
@Rollback
public void testUserMapper() throws Exception {
// insert一条数据,并select出来验证
userMapper.insert("AAA", 20);
User u = userMapper.findByName("AAA");
Assert.assertEquals(20, u.getAge().intValue());
// update一条数据,并select出来验证
u.setAge(30);
userMapper.update(u);
u = userMapper.findByName("AAA");
Assert.assertEquals(30, u.getAge().intValue());
// 删除这条数据,并select验证
userMapper.delete(u.getId());
u = userMapper.findByName("AAA");
Assert.assertEquals(null, u);
}
}

返回结果的绑定

对于增、删、改操作相对变化较小。而对于“查”操作,我们往往需要进行多表关联,汇总计算等操作,那么对于查询的结果往往就不再是简单的实体对象了,往往需要返回一个与数据库实体不同的包装类,那么对于这类情况,就可以通过@Results@Result注解来进行绑定,具体如下:

1
2
3
4
5
6
@Results({
@Result(property = "name", column = "name"),
@Result(property = "age", column = "age")
})
@Select("SELECT name, age FROM user")
List<User> findAll();

在上面代码中,@Result中的property属性对应User对象中的成员名,column对应SELECT出的字段名。在该配置中故意没有查出id属性,只对User对应中的name和age对象做了映射配置,这样可以通过下面的单元测试来验证查出的id为null,而其他属性不为null:

1
2
3
4
5
6
7
8
9
@Test
@Rollback
public void testUserMapper() throws Exception {
List<User> userList = userMapper.findAll();
for(User user : userList) {
Assert.assertEquals(null, user.getId());
Assert.assertNotEquals(null, user.getName());
}
}

后记

本文主要介绍几种最为常用的方式,更多其他注解的使用可参见文档:http://www.mybatis.org/mybatis-3/zh/java-api.html

本文示例完整代码:Chapter3-2-8

分享到:
评论

相关推荐

    Spring boot2基于Mybatis实现多表关联查询

    使用 MyBatis 实现关联查询非常简单,只需要在 Mapper 接口中使用 @Results 注解指定关联关系。例如,在 UserMapper 接口中,使用 @Results 注解指定了用户的公司信息和账户信息。 ```java public interface ...

    一个基于Spring boot+mybatis客户管理系统

    《基于Spring Boot+MyBatis的CRM客户管理系统详解》 在现代企业中,客户关系管理(Customer Relationship Management,简称CRM)系统是至关重要的工具,它帮助企业有效地管理与客户的交互,提高销售效率,优化客户...

    spring-boot-starter-mybatis-spring-boot-1.0.2.zip

    《Spring Boot集成MyBatis详解》 在Java开发领域,Spring Boot以其简洁的配置和快速的启动特性,已经成为构建微服务应用的首选框架。而MyBatis作为一款强大的持久层框架,深受开发者喜爱,它提供了灵活的SQL映射...

    spring boot+mybatis+layui实现的项目基本框架

    在Spring Boot中,我们可以通过@ConfigurationProperties注解来配置MyBatis的相关属性,如数据源、事务管理器等,并使用@MapperScan扫描Mapper接口,实现SQL的映射。 3. **Layui简介与页面构建** Layui是一款模块...

    Spring Boot Mybatis使用详解含示例(值得珍藏)

    【Spring Boot整合MyBatis详解】 在现代Java开发中,Spring Boot因其简洁的配置和强大的功能而成为首选的框架。而MyBatis作为一款优秀的持久层框架,与Spring Boot结合可以构建高效、灵活的数据库访问层。本文将...

    Spring-Boot+Mybatis1.26完成的框架

    【Spring-Boot+Mybatis框架整合详解】 Spring-Boot与Mybatis的整合是现代Java开发中的常见实践,这种集成能够帮助开发者快速构建高效且简洁的应用程序。本框架以Spring-Boot为核心,结合Mybatis作为持久层框架,为...

    spring-boot-starter-mybatis-spring-boot-2.2.1.tar.gz

    《Spring Boot集成MyBatis详解:基于spring-boot-starter-mybatis-2.2.1》 在现代Java开发中,Spring Boot以其简化配置、快速启动的优势成为主流框架。而MyBatis作为轻量级持久层框架,以其灵活的SQL映射和强大的...

    SpringBoot使用Mybatis Plus详解含示例代码(值得珍藏)

    通过阅读本文,你将能够了解如何在Spring Boot项目中使用MyBatis Plus进行高效的数据操作。 MyBatis Plus是一个强大而易于使用的MyBatis扩展工具,它提供了丰富的功能和工具,帮助开发者简化数据库操作,提高开发...

    spring-boot-starter-mybatis-spring-boot-1.1.0.zip

    《Spring Boot集成MyBatis详解:以spring-boot-starter-mybatis-1.1.0为例》 在现代Java开发中,Spring Boot以其简洁、高效的特点备受开发者青睐,而MyBatis作为一款轻量级的持久层框架,因其灵活的数据访问方式也...

    spring-boot-starter-mybatis-spring-boot-2.2.0.tar.gz

    《Spring Boot集成MyBatis详解:基于Spring Boot 2.2.0版本》 Spring Boot以其简化Spring应用程序的初始化和配置而备受青睐,而MyBatis作为轻量级的持久层框架,以其灵活的SQL映射和易于使用的特性在Java开发中广泛...

    spring-boot-starter-mybatis-spring-boot-1.3.3.zip

    《Spring Boot集成MyBatis详解》 在Java开发领域,Spring Boot以其简洁的配置和快速的应用启动特性,已经成为主流的微服务框架。而MyBatis作为一款轻量级的持久层框架,以其灵活的SQL映射和强大的实体与数据库交互...

    spring-boot-starter-mybatis-spring-boot-2.3.1.zip

    《Spring Boot集成MyBatis详解》 在Java开发领域,Spring Boot以其简洁的配置和快速的应用启动而备受青睐。MyBatis作为一款优秀的持久层框架,简化了SQL操作,使得数据库访问更为便捷。当这两者结合,便形成了...

    spring-boot-starter-mybatis-spring-boot-1.0.2.tar.gz

    《Spring Boot集成MyBatis详解》 在Java开发领域,Spring Boot框架因其便捷的配置、快速的启动和强大的依赖管理而备受青睐。MyBatis作为一款轻量级的持久层框架,以其灵活的SQL映射和优秀的性能深受开发者喜爱。当...

    spring-boot-starter-mybatis-spring-boot-1.2.0.tar.gz

    starter-mybatis`是Spring Boot为Mybatis提供的一个起步依赖,它包含了Mybatis、Mybatis-Spring和相关依赖,使得开发者无需手动管理这些依赖,只需要引入这个starter,就可以快速地在Spring Boot项目中使用Mybatis。...

    Spring boot + mybatis工程模板

    【Spring Boot + Mybatis 工程模板详解】 Spring Boot 和 Mybatis 的结合是现代 Java 开发中的常见选择,它们能够帮助开发者快速构建高效、简洁的Web应用。本模板提供了一个基础的Spring Boot集成Mybatis的工程结构...

    spring-boot-starter-mybatis-spring-boot-1.3.0.tar.gz

    《Spring Boot集成MyBatis详解:从1.3.0版本到最新实践》 Spring Boot以其简化配置、快速启动的特点,已经成为Java开发领域的热门框架。而MyBatis作为一款轻量级的持久层框架,以其灵活的SQL映射功能深受开发者喜爱...

    spring-boot-starter-mybatis-spring-boot-2.1.0.tar.gz

    《Spring Boot集成MyBatis详解:基于spring-boot-starter-mybatis-2.1.0》 在现代Java开发中,Spring Boot以其简化配置、快速启动的特性,深受开发者喜爱。而MyBatis作为轻量级的持久层框架,以其灵活的SQL映射和...

    spring-boot-starter-mybatis-spring-boot-2.3.1.tar.gz

    《Spring Boot集成MyBatis详解:以spring-boot-starter-mybatis-2.3.1为例》 在现代Java开发中,Spring Boot以其简洁、高效的特点成为首选框架,而MyBatis作为轻量级的持久层框架,也因其灵活的数据访问能力受到...

    Spring boot+Mybatis的后台管理系统

    《Spring Boot + Mybatis 后台管理系统详解》 在当今的Web开发领域,Spring Boot以其简洁的配置、快速的启动和强大的集成能力,已经成为构建后台服务的首选框架。结合Mybatis这一轻量级的持久层框架,我们可以创建...

Global site tag (gtag.js) - Google Analytics