springboot注解方式整合mybatis
时间: 2023-05-31 09:20:39 浏览: 153
springboot整合mybatis案例(注解方式)
5星 · 资源好评率100%
### 回答1:
Spring Boot提供了很多注解来简化MyBatis的配置和使用。下面是使用注解整合MyBatis的步骤:
1. 添加依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
```
2. 配置数据源
在application.properties文件中配置数据源信息:
```
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
```
3. 配置MyBatis
在启动类上添加@MapperScan注解,指定Mapper接口所在的包:
```
@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
4. 编写Mapper接口
在Mapper接口上添加@Mapper注解,然后定义SQL语句:
```
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(Long id);
}
```
5. 使用Mapper接口
在需要使用Mapper接口的地方注入Mapper接口即可:
```
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {
return userMapper.findById(id);
}
}
```
以上就是使用注解方式整合MyBatis的步骤。
### 回答2:
Spring Boot是一个使用注解方式快速开发的框架,而MyBatis是一个灵活可扩展的持久层框架,两者结合使用可以很好地提高开发效率和数据持久化能力。下面就介绍 Spring Boot 注解方式整合 MyBatis 的相关配置和代码。
首先,我们需要在 pom.xml 中添加如下依赖:
```
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
```
其中,mybatis-spring-boot-starter 提供了 Spring Boot 和 MyBatis 的整合支持,而 mysql-connector-java 是 MySQL JDBC 驱动依赖,这里我的版本分别是 2.1.2 和 8.0.21。
接着,在应用主配置文件中(application.properties 或 application.yml)添加如下配置:
```
# 配置 MyBatis SQL 映射文件路径
mybatis.mapper-locations=classpath:mapper/*.xml
# 配置 MyBatis 实体类别名搜索路径
mybatis.type-aliases-package=com.example.domain
# 配置数据库连接信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/<your-db-name>?useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=<your-db-user>
spring.datasource.password=<your-db-password>
```
上述配置中,mapper-locations 配置了 MyBatis SQL 映射文件的路径,type-aliases-package 配置了实体类别名的搜索路径,而 datasource 开头的配置项则配置了数据库连接的相关信息。
然后,在实体类上加上相应的注解,如 @Data、@Entity 等,这里以 User 实体类为例:
```
@Data
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Integer age;
}
```
这里使用了 lombok 提供的 @Data 注解,简化了实体类的 getter 和 setter 方法的编写,同时使用 JPA 提供的 @Entity、@Id 和 @GeneratedValue 等注解标注了实体主键和自增长策略。
接着,编写 MyBatis 的 SQL 映射文件 UserMapper.xml,配置增删改查等 SQL 语句:
```
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="UserMap" type="com.example.domain.User">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="age" property="age" />
</resultMap>
<select id="findUserById" resultMap="UserMap">
select * from user where id = #{id}
</select>
<insert id="addUser" useGeneratedKeys="true" keyProperty="id">
insert into user(name, age) values(#{name}, #{age})
</insert>
<update id="updateUser">
update user set name = #{name}, age = #{age} where id = #{id}
</update>
<delete id="deleteUserById">
delete from user where id = #{id}
</delete>
</mapper>
```
其中,namespace 指定了 Mapper 接口类的全限定名,resultMap 则定义了实体类和数据库字段之间的映射关系,而 select、insert、update、delete 则分别对应了查询、新增、更新和删除操作的 SQL 语句。
最后,编写 Mapper 接口类 UserMapper.java,配置相应的方法:
```
@Repository
public interface UserMapper {
@Select("select * from user where id = #{id}")
User findUserById(Long id);
@Insert("insert into user(name, age) values(#{name}, #{age})")
int addUser(User user);
@Update("update user set name = #{name}, age = #{age} where id = #{id}")
int updateUser(User user);
@Delete("delete from user where id = #{id}")
int deleteUserById(Long id);
}
```
这里使用了 Spring 的 @Repository 注解标注了 UserMapper 接口,并使用了 MyBatis 提供的注解 @Select、@Insert、@Update 和 @Delete 标注了对应的 SQL 方法,并且方法的参数和返回值类型都与实体类和 SQL 映射文件中的定义一致。
通过以上的配置和代码,就实现了 Spring Boot 注解方式整合 MyBatis、JPA 的功能,通过简单的注解配置,完成了对测试的增删改查操作。
### 回答3:
SpringBoot是一个非常流行的Java开发框架,它拥有许多可扩展组件,其中之一就是MyBatis。MyBatis是一种ORM(对象关系映射)框架,允许我们使用SQL语句轻松地对数据库进行操作。本文将介绍如何使用注解的方式整合SpringBoot和MyBatis。
一、创建SpringBoot项目
首先,我们需要创建一个新的SpringBoot应用程序。你可以使用你自己选择的IDE,或者使用Spring官方的Spring Initializr网站。我们需要选择一些选项来生成应用程序:
Group:组ID,我们通常使用公司网址的反向域名方式,例如“com.example”。
Artifact:项目名称,我们可以使用任何名称。
Dependencies:我们需要Spring Web和MyBatis依赖,这样就可以使用基于注解的MyBatis功能。SpringBoot会为我们引入它们的依赖项,所以不用自己手动添加。
点击Generate下载生成的项目文件,解压后导入到我们的IDE中。
二、配置数据库
如果我们想使用MyBatis访问数据库,我们需要配置数据源。在SpringBoot中,我们可以使用application.properties文件来配置数据库连接信息。在此配置文件中,我们需要指定数据库的URL,用户名和密码。
在src/main/resources目录中创建application.properties文件,添加以下内容:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
在这里,我们以MySQL数据库为例,指定连接地址、用户名和密码。我们需要确保test数据库已经创建。
三、编写实体类
我们需要创建一个User实体类,它将映射到我们的数据库表中。可以在任何包下创建User类,如com.example.pojo包下。在User类中,我们需要添加一些属性和Getter /Setter方法,以及toString方法,如下:
package com.example.pojo;
public class User {
private int id;
private String name;
private int age;
private String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", email='" + email + '\'' +
'}';
}
}
我们的User类包含id、name、age和email属性,分别对应我们的数据库表中的id、name、age和email列。
四、编写Mapper类
Mapper类是MyBatis中用于定义数据库表操作的接口。在此,我们将创建一个名为UserMapper的接口,并定义一些基本的操作,例如插入、查询、更新和删除用户,如下所示:
package com.example.mybatis;
import com.example.pojo.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserMapper {
@Insert("INSERT INTO user(name, age, email) VALUES(#{name}, #{age}, #{email})")
int insert(User user);
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(long id);
@Select("SELECT * FROM user")
List<User> getUsers();
@Update("UPDATE user SET name=#{name},age=#{age},email=#{email} WHERE id =#{id}")
int updateUser(User user);
@Delete("DELETE FROM user WHERE id =#{id}")
int deleteUser(long id);
}
我们的UserMapper为MyBatis框架提供必要的表操作定义,例如插入、查询、更新和删除用户。
五、整合配置
我们需要在SpringBoot中配置MyBatis。我们将创建一个Configuration类,使用注解方式整合SpringBoot和MyBatis。在此配置类中,我们使用@MapperScan注解来扫描Mapper类,并使用@Bean注解创建SqlSessionFactoryBean和DataSourceTransactionManager实例。
在src/main/java/com/example/MybatisApplication.java的同级目录下创建MybatisConfig类,代码如下:
package com.example.mybatis;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.example.mybatis") //扫描Mapper接口所在的包
public class MybatisConfig {
@Autowired
private DataSource dataSource;
/**
* 创建SqlSessionFactoryBean实例
*/
@Bean
@ConfigurationProperties(prefix = "mybatis")
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
return factoryBean.getObject();
}
/**
* 创建事务管理器
*/
@Bean
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
使用@MapperScan注解,我们可以将我们的Mapper接口扫描到我们的SpringBoot应用程序中。使用@Bean注解和@ConfigurationProperties注解,我们可以创建SqlSessionFactoryBean实例,并将其设置为DataSource。这将为我们的程序提供访问数据库的能力。
六、测试
现在,我们已经完成了整个环境配置和代码编写,在此可以对我们的代码进行测试了。
在src/main/java/com/example/controller目录下创建UserController类,代码如下:
package com.example.controller;
import com.example.mybatis.UserMapper;
import com.example.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/")
public List<User> findAll() {
return userMapper.getUsers();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") long id) {
return userMapper.getUserById(id);
}
@PostMapping("/")
public int addUser(@RequestBody User user) {
return userMapper.insert(user);
}
@PutMapping("/{id}")
public int updateUser(@PathVariable("id") long id,
@RequestBody User user) {
user.setId(id);
return userMapper.updateUser(user);
}
@DeleteMapping("/{id}")
public int deleteUser(@PathVariable("id") long id) {
return userMapper.deleteUser(id);
}
}
我们的UserController是一个RestController类,用于处理HTTP请求。在此控制器类中,我们注入了UserMapper类,并在方法中调用它的方法,如查询、插入、更新和删除用户。
最后,我们可以运行我们的SpringBoot应用程序,并在浏览器中打开http://localhost:8080/users/路径,查看所有用户。
总结
在本文中,我们已经介绍了如何使用注解的方式整合Spring Boot和MyBatis。使用注解可以帮助我们轻松地进行配置,从而快速地编写出支持数据库操作的Web应用程序。通过本文的介绍,大家对注解方式整合SpringBoot和Mybatis应该有了更加深入的了解。
阅读全文