下面我将为你详细讲解“SpringBoot+Mybatis实现Mapper接口与Sql绑定几种姿势”的完整攻略。
1. 概述
在使用Mybatis时,我们需要将Mapper接口与SQL进行绑定,以便可以方便地在Java代码中调用。在SpringBoot项目中,我们可以采用多种方式来实现Mapper接口与SQL的绑定。
本文将介绍三种实现Mapper接口与SQL绑定的方式,分别为XML配置文件方式、注解方式和Mapper接口与Mapper映射文件配合使用的方式。
2. 示例项目说明
为了便于演示,我们假设有一个简单的数据库表“user”,包含字段“id”和“name”。我们需要通过Mybatis框架来对该表进行增、删、改、查操作。
在本文中,我们使用SpringBoot框架来搭建项目,并在其中集成Mybatis框架。同时,我们使用MySQL作为数据库。
项目结构如下:
└─src
└─main
├─java
| └─com.example.demo
| ├── DemoApplication.java
| ├── mapper
| | └─UserMapper.java
| ├── model
| | └─User.java
| └── service
| └─impl
| └─UserServiceImpl.java
└─resources
├── application.properties
├── mapper
| └─UserMapper.xml
├── static
└── templates
其中,“mapper”目录下包含两个文件,“UserMapper.xml”用于存放SQL语句,“UserMapper.java”用于定义Mapper接口。用户实体类“User.java”存放在“model”目录下,服务实现类“UserServiceImpl.java”存放在“service\impl”目录下。数据库连接信息、以及一些Mybatis相关的配置信息都在“application.properties”文件中。
3. XML配置文件方式
3.1 配置Mapper接口
首先,我们需要定义一个Mapper接口,用于映射SQL语句。在本例中,我们定义了一个“UserMapper”接口,用于对“user”表进行操作。代码如下:
@Mapper
public interface UserMapper {
User selectUserById(int id);
}
在接口上加上@Mapper注解,表示该接口是一个Mapper接口。
3.2 编写Mapper映射文件
接下来,我们需要编写一个XML文件,用于配置Mapper接口的SQL语句。在本例中,我们命名该文件为“UserMapper.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.mapper.UserMapper">
<select id="selectUserById" resultType="com.example.demo.model.User">
select * from user where id = #{id}
</select>
</mapper>
其中,“namespace”属性指向Mapper接口的类全名,定义了一个“select”节点,指定了SQL语句和返回结果集的类型。
3.3 使用Mapper接口
在接口中定义好方法和SQL语句之后,我们可以在服务实现类中使用Mapper接口进行SQL操作。代码如下:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserById(int id) {
return userMapper.selectUserById(id);
}
}
在服务实现类中,我们使用@Autowired注解将Mapper接口注入到Service中。然后,就可以通过该Mapper接口调用SQL语句进行操作了。
4. 注解方式
4.1 配置Mapper接口
除了XML配置文件方式,Mybatis还支持使用注解方式来绑定Mapper接口和SQL语句。在本例中,我们可以使用@Select注解来为Mapper接口绑定SQL语句。代码如下:
@Mapper
public interface UserMapper {
@Select("select * from user where id = #{id}")
User selectUserById(int id);
}
在Mapper接口的方法上,我们使用@Select注解来绑定SQL语句。
4.2 使用Mapper接口
在服务实现类中,直接使用@Autowired注解来注入Mapper接口。代码如下:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserById(int id) {
return userMapper.selectUserById(id);
}
}
在服务实现类中,我们直接使用(@Autowired)注解将Mapper接口注入到Service中。然后,就可以通过该Mapper接口调用SQL语句进行操作了。
5. Mapper接口与Mapper映射文件配合使用的方式
5.1 配置Mapper接口
除了单独使用XML配置文件或注解,Mybatis还支持使用Mapper接口与Mapper映射文件配合使用的方式。在该方式中,我们可以将SQL语句定义在XML文件中,然后在Mapper接口中引用该文件。代码如下:
@Mapper
public interface UserMapper {
User selectUserById(int id);
}
在Mapper接口中,我们只需要定义一个方法即可。
5.2 编写Mapper映射文件
接下来,我们需要编写一个XML文件,用于配置SQL语句。在本例中,我们命名该文件为“UserMapper.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.mapper.UserMapper">
<select id="selectUserById" resultType="com.example.demo.model.User">
select * from user where id = #{id}
</select>
</mapper>
与上文中XML配置文件方式相同,我们定义了一个“select”节点,指定了SQL语句和返回结果集的类型。
5.3 使用Mapper接口
在服务实现类中,我们需要使用@MapperScan注解来扫描Mapper接口所在的包路径,并把它交给Spring管理。代码如下:
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
在服务实现类中,我们直接使用@Autowired注解来注入Mapper接口。代码如下:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserById(int id) {
return userMapper.selectUserById(id);
}
}
在服务实现类中,我们直接使用@Autowired注解将Mapper接口注入到Service中。然后,就可以通过该Mapper接口调用SQL语句进行操作了。
6. 总结
本文分别介绍了XML配置文件方式、注解方式和Mapper接口与Mapper映射文件配合使用的方式来实现Mapper接口与SQL绑定。虽然这三种方式各有优缺点,但它们都能够很好地配合SpringBoot框架和Mybatis框架使用,方便地进行数据库操作。
完整的项目代码请参考我的Github。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot+Mybatis实现Mapper接口与Sql绑定几种姿势 - Python技术站