Spring Boot微服务项目实战(第2版)学习笔记-第10章集成MyBatis

本章主要介绍如何在Spring Boot中集成MyBatis框架,以及通过MyBatis框架实现查询等功能,最后介绍如何使用MyBatisCodeHelper插件快速生成增删改查代码等内容。

1.MyBatis介绍

MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

2.集成MyBatis的步骤

2.1 引入依赖

在Spring Boot中集成MyBatis,首先需要在pom.xml文件中引入所需的依赖,具体代码如下:

<!-- mybatis start -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.1</version>
</dependency>

2.2 添加MyBatis配置

在pom文件添加MyBatis所需的依赖之后,需要在application.properties文件中添加如下的配置信息:

### MyBatis配置
mybatis.mapper-locations=classpath:/mappers/*.Mapper.xml
mybatis.type-aliases-package=com.example.demo.dao
  • mybatis.mapper-locations:Mapper资源文件存放的路径。
  • mybatis.type-aliases-package:Dao接口文件存放的目录。

2.3 Dao层和Mapper文件开发

application.properties配置添加完成之后,需要根据MyBatis配置添加对应的文件夹。首先,需要在/src/main/java/com.example.demo.dao目录下新建AyUserDao接口,这样Spring Boot启动时,就可以根据application.properties配置mybatis.type-aliases-package,找到AyUserDao接口。AyUserDao的具体代码如下:

@Mapper
public interface AyUserDao {
	AyUser findByNameAndPassword(@Param("name") String name, @Param("passwaord") String password);
}
  • @Mapper:重要注解,MyBatis根据接口定义与Mapper文件中的SQL语句动态创建接口实现。
  • @Param:注解参数,在Mapper.xml配置文件中,可以采用#{}的方式对@Param注解括号内的参数进行引用。
  • findByNameAndPassword:该方法可以通过用户名和密码查询用户。

然后,在/src/main/resources/mappers目录下新建AyUserMapper.xml文件,SpringBoot在项目启动时,会根据application.properties配置mybatis.mapper-locations找到该文件。AyUserMapper.xml的具体代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.dao.AyUserDao">
	<resultMap id="UserResultMap" type="com.example.demo.model.AyUser">
		<id column="id" property="id" jdbcType="VARCHAR"/>
		<result column="name" property="name" jdbcType="VARCHAR"/>
		<result column="password" property="password" jdbcType="VARCHAR"/>
		<result column="mail" property="mail" jdbcType="VARCHAR"/>
	</resultMap>
	
	<select id="findByNameAndPassword"  resultMap="UserResultMap" parameterType="String">
		select * from ay_user u
		<where>
			u. name = #{name}
			and u.password = #{password}
		</where>
	</select>
</mapper>
  • <mapper>标签:该标签的namespace属性用于绑定Dao接口。
  • <select>标签:用来编写select语句,映射查询语句。select标签有几个重要的属性,比如resultMap。
  • <resultMap>:映射管理器resultMap,是MyBatis中最强大的工具,描述了如何将数据库查询的结果集映射到Java对象,并管理结果和实体类之间的映射关系。

AyUserMapper.xml类开发完成之后,需要在目录/src/main/java/com.example.demo.model下开发对应的实体类AyUser,具体代码如下:

@Entity
@Table(name = "ay_user")
public class AyUser implements Serializable {
	//主键
	@Id
	private String id;
	//用户名
	private String name;
	//密码
	private String password;
	//邮箱
	private String mail;
}

AyUser代码开发完成之后,在之前开发好的AyUserService接口类中添加接口findByNameAndPassword。具体代码如下:

public interface AyUserService{
	AyUser findByNameAndPassword(String name, String password);
}

然后,在AyUserServiceImpl类中实现findByNameAndPassword接口,具体代码如下:

//@Transactional
@Service
public class AyUserServiceImpl implements AyUserService {
	// 省略代码
	@Resource
	private AyUserDao ayUserDao;
	@Override
	public AyUser findByNameAndPassword(String name, String password) {
		return ayUserDao.findByNameAndPassword(name,password)
	}
}

2.4 测试

代码开发完成之后,在MySpringBootApplicationTests类下添加测试方法,具体代码如下:

@Resource
private AyUserService ayUserService;

@Test
public void testMybatis(){
	AyUser ayUser = ayUserService.findByNameAndPassword("阿姨","123456");
	logger.info(ayUser.getId() + ayUser.getName());
}

执行测试用例,在Intellij IDEA控制台上可以看到相应的打印信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值