Spring Mybatis整合实践

微笑向暖 2024-06-07 ⋅ 23 阅读

简介

在Java开发中,Spring和Mybatis是两个非常常用的框架。Spring是一个轻量级的IoC(控制反转)和AOP(面向切面编程)容器,而Mybatis是一个持久层框架,用于访问和操作数据库。本文将介绍如何将Spring和Mybatis进行整合,以实现更便捷的开发和数据库操作。

环境搭建

首先,我们需要创建一个Maven项目,并添加相应的依赖。

<dependencies>
    <!-- Spring相关依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.10</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.10</version>
    </dependency>
    <!-- Mybatis相关依赖 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.7</version>
    </dependency>
    <!-- 数据库驱动依赖 -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.200</version>
    </dependency>
</dependencies>

配置文件

在resources目录下创建一个名为applicationContext.xml的配置文件,用于配置Spring和Mybatis的相关bean。

<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.h2.Driver" />
    <property name="url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=MYSQL;INIT=CREATE SCHEMA IF NOT EXISTS test" />
    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>

<!-- 配置SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>

<!-- 配置MapperScan -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.example.mapper" />
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>

在resources目录下创建一个名为mybatis-config.xml的配置文件,用于配置Mybatis的一些全局属性。

<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
</configuration>

DAO层

com.example.mapper包下创建一个名为UserMapper.java的接口,用于定义数据库操作接口。

public interface UserMapper {
    User getUserById(int id);
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
    List<User> getAllUsers();
}

Service层

com.example.service包下创建一个名为UserService.java的接口,用于定义用户相关的服务接口。

public interface UserService {
    User getUserById(int id);
    void createUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
    List<User> getAllUsers();
}

com.example.service.impl包下创建一个名为UserServiceImpl.java的类,实现UserService接口并注入UserMapper,并完成相应的方法实现。

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(int id) {
        return userMapper.getUserById(id);
    }

    @Override
    public void createUser(User user) {
        userMapper.insertUser(user);
    }

    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

    @Override
    public void deleteUser(int id) {
        userMapper.deleteUser(id);
    }

    @Override
    public List<User> getAllUsers() {
        return userMapper.getAllUsers();
    }
}

Controller层

com.example.controller包下创建一个名为UserController.java的类,用于接收用户请求并调用相应的服务。

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUserById(@PathVariable int id) {
        return userService.getUserById(id);
    }

    @PostMapping("/")
    public String createUser(@RequestBody User user) {
        userService.createUser(user);
        return "User created successfully.";
    }

    @PutMapping("/{id}")
    public String updateUser(@PathVariable int id, @RequestBody User user) {
        user.setId(id);
        userService.updateUser(user);
        return "User updated successfully.";
    }

    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable int id) {
        userService.deleteUser(id);
        return "User deleted successfully.";
    }

    @GetMapping("/")
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }
}

结语

通过整合Spring和Mybatis,我们可以实现更加便捷的开发和数据库操作。在本文中,我们已经介绍了如何搭建环境、配置文件,以及如何定义DAO、Service和Controller层的代码。希望通过本文的指导,你能成功整合Spring和Mybatis,并开始愉快地进行Java开发。


全部评论: 0

    我有话说: