Java中SSM框架实现增删改查功能代码详解

yizhihongxing

让我来详细讲解Java中SSM框架实现增删改查功能代码的攻略,包括以下几个部分:

  1. SSM框架简介
  2. 数据库建表和配置文件
  3. DAO层代码示例
  4. Service层代码示例
  5. Controller层代码示例

1. SSM框架简介

SSM框架是指Spring+SpringMVC+MyBatis三个框架的整合,三个框架各自担任不同角色,共同完成项目的开发。其中,Spring框架负责管理整个项目中Bean对象的生命周期,提供IoC和AOP等功能;SpringMVC框架负责接收和处理请求,将结果响应给前台页面;MyBatis框架负责数据库的操作,使开发者可以使用简单的SQL语句进行数据库的访问。

2. 数据库建表和配置文件

首先,我们需要在数据库中建立数据表。例如,我们创建一个用户表,包含id、name、age、gender四个字段:

CREATE TABLE user(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20),
    age INT,
    gender VARCHAR(10)
);

然后,在MyBatis的配置文件mybatis-config.xml中配置数据库连接信息和mapper文件的路径:

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/dao/UserMapper.xml"/>
    </mappers>
</configuration>

其中,需要配置数据库的连接信息,包括驱动名、url、用户名和密码,以及mapper文件的路径。

3. DAO层代码示例

接下来,我们需要编写DAO层代码,用于数据库的增删改查操作。例如,我们创建一个UserDao接口和对应的UserDaoImpl实现类:

UserDao.java

public interface UserDao {
    User getUserById(Integer id);

    List<User> getAllUser();

    void insertUser(User user);

    void updateUser(User user);

    void deleteUser(Integer id);
}

UserDaoImpl.java

@Repository
public class UserDaoImpl implements UserDao {

    @Autowired
    private SqlSessionFactory sqlSessionFactory;

    @Override
    public User getUserById(Integer id) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            return sqlSession.selectOne("com.example.dao.UserMapper.getUserById", id);
        }
    }

    @Override
    public List<User> getAllUser() {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            return sqlSession.selectList("com.example.dao.UserMapper.getAllUser");
        }
    }

    @Override
    public void insertUser(User user) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            sqlSession.insert("com.example.dao.UserMapper.insertUser", user);
            sqlSession.commit();
        }
    }

    @Override
    public void updateUser(User user) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            sqlSession.update("com.example.dao.UserMapper.updateUser", user);
            sqlSession.commit();
        }
    }

    @Override
    public void deleteUser(Integer id) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            sqlSession.delete("com.example.dao.UserMapper.deleteUser", id);
            sqlSession.commit();
        }
    }
}

在UserDaoImpl中注入了SqlSessionFactory对象,用于获取SqlSession对象。每个方法需要打开SqlSession对象进行数据库的操作,之后需要关闭SqlSession对象,并在增删改操作之后进行commit操作,保证数据库操作的完整性。

4. Service层代码示例

在DAO层的基础上,我们需要编写Service层代码,实现具体的业务逻辑。例如,我们创建一个UserService接口和对应的UserServiceImpl实现类:

UserService.java

public interface UserService {
    User getUserById(Integer id);

    List<User> getAllUser();

    void addUser(User user);

    void updateUser(User user);

    void deleteUser(Integer id);
}

UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Override
    public User getUserById(Integer id) {
        return userDao.getUserById(id);
    }

    @Override
    public List<User> getAllUser() {
        return userDao.getAllUser();
    }

    @Override
    public void addUser(User user) {
        userDao.insertUser(user);
    }

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

    @Override
    public void deleteUser(Integer id) {
        userDao.deleteUser(id);
    }
}

在UserServiceImpl中注入了UserDao对象,用于完成数据库的操作。每个方法需要调用对应的UserDao方法,将结果返回给Controller层。

5. Controller层代码示例

最后,在Service层的基础上,我们需要编写Controller层代码,接收并处理前端页面的请求,将结果返回给浏览器。例如,我们创建一个UserController类,用于处理用户请求,并将结果返回给页面:

@RestController
public class UserController {

    @Autowired
    private UserService userService;

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

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

    @PostMapping("/user")
    public void addUser(@RequestBody User user) {
        userService.addUser(user);
    }

    @PutMapping("/user")
    public void updateUser(@RequestBody User user) {
        userService.updateUser(user);
    }

    @DeleteMapping("/user/{id}")
    public void deleteUser(@PathVariable Integer id) {
        userService.deleteUser(id);
    }
}

在UserController中注入了UserService对象,用于完成具体的业务逻辑。每个方法使用不同的HTTP方法,例如GET、POST、PUT、DELETE等,对应不同的数据库操作。使用@PathVariable和@RequestBody注解,接收前端页面传递的参数,并将结果返回给前端页面。

至此,我们已经完成了Java中SSM框架实现增删改查功能代码的攻略。

下面是两个示例代码:

1、插入一条用户信息

前端页面传递过来的请求参数:

{
    "id": 1,
    "name": "Tom",
    "age": 18,
    "gender": "male"
}

UserController中对应的代码:

@PostMapping("/user")
public void addUser(@RequestBody User user) {
    userService.addUser(user);
}

UserService中对应的代码:

@Override
public void addUser(User user) {
    userDao.insertUser(user);
}

UserDao中对应的代码:

@Override
public void insertUser(User user) {
    try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
        sqlSession.insert("com.example.dao.UserMapper.insertUser", user);
        sqlSession.commit();
    }
}

2、查询所有用户信息

UserController中对应的代码:

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

UserService中对应的代码:

@Override
public List<User> getAllUser() {
    return userDao.getAllUser();
}

UserDao中对应的代码:

@Override
public List<User> getAllUser() {
    try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
        return sqlSession.selectList("com.example.dao.UserMapper.getAllUser");
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中SSM框架实现增删改查功能代码详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • InputStreamReader 和FileReader的区别及InputStream和Reader的区别

    关于InputStreamReader和FileReader的区别,以及InputStream和Reader的区别,我们需要从数据输入、数据输出两个方面来讲解。 InputStreamReader 和 FileReader 的区别 InputStreamReader和FileReader都是读取字符流的类,主要区别在于它们输入的数据源不同。 InputStr…

    Java 2023年5月20日
    00
  • Java项目开发中实现分页的三种方式总结

    Java项目开发中实现分页的三种方式总结 在Java项目的开发过程中,经常需要对列表数据进行分页显示。本篇文章将总结Java项目开发中实现分页的三种方式,以供参考。 第一种方式:使用分页插件 分页插件是一种在MyBatis框架中常用的解决方案,它可以方便地实现分页功能。下面是使用MyBatis的一个示例: <!– 配置分页插件 –> <…

    Java 2023年6月16日
    00
  • java连接Oracle数据库的方法解析

    下面是Java连接Oracle数据库的方法解析的完整攻略。 一、准备工作 1.1 下载Oracle JDBC驱动 在Java连接Oracle数据库之前,需要先下载Oracle JDBC驱动程序,可以前往Oracle官网进行下载。 1.2 配置Oracle环境变量 将Oracle的安装目录加入环境变量中,以便Java程序能够正常连接Oracle数据库。 二、J…

    Java 2023年5月19日
    00
  • 一篇文章告诉你如何在Java数组中插入一个字符

    下面是详细的攻略: 1. 准备工作 在 Java 中,数组是一个固定大小的对象容器,其中每个元素都必须是相同的数据类型。在插入一个字符到数组中,我们需要先确定以下几点: 数组是否足够容量存放新元素 新元素的数据类型是否与数组中元素的数据类型相同 2. 创建新数组并复制元素 由于 Java 数组的大小是固定不变的,我们无法插入一个元素到原有的数组。因此我们需要…

    Java 2023年5月26日
    00
  • Java如何基于反射获取对象属性信息

    获取Java对象的属性信息是Java语言中很常见的一个需求,在Java中通过反射机制可以很方便的完成。本篇攻略将会详细讲解如何基于反射获取Java对象的属性信息。 反射机制 Java的反射机制是指在程序运行时获取类的相关信息,可以获取类名、属性、方法等相关信息。Java反射机制是通过Java.lang.reflect包中的类和接口实现的,主要应用在框架开发、…

    Java 2023年5月26日
    00
  • Spring Boot用户注册验证的实现全过程记录

    Spring Boot用户注册验证的实现全过程记录 在Spring Boot中实现用户注册验证可以帮助我们确保只有合法的用户才能够使用我们的服务,让我们的应用更加安全可靠。本攻略将介绍如何使用Spring Boot实现完整的用户注册及验证功能。 1. 创建Spring Boot项目并添加相关依赖 首先,需要创建一个Spring Boot项目,并在pom.xm…

    Java 2023年6月3日
    00
  • SpringBoot定时任务设计之时间轮案例原理详解

    SpringBoot定时任务设计之时间轮案例原理详解 本文将详细介绍SpringBoot定时任务设计之时间轮案例,讲解时间轮的基本原理和实现方式,以及如何在SpringBoot中实现定时任务的调度。 基本原理 时间轮是一种常见的定时任务调度算法,它的基本原理是将时间线性化,并按照固定的时间间隔划分成若干个时间槽,将任务按照配合它触发时间所在的时间槽进行存储和…

    Java 2023年5月20日
    00
  • WIN2003 IIS相关错误的解决方法

    WIN2003 IIS相关错误的解决方法 导言 WIN2003是一个非常优秀稳定的操作系统,而IIS是其中不可或缺的组件。然而,我们在使用IIS过程中,可能会遇到一些错误,导致网站无法正常访问。在本文中,我们将介绍一些常见的IIS错误及其解决方法,帮助您快速排除问题,让您的网站重获生机。 目录 错误一:IIS 500.19 错误 错误二:IIS 404 错误…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部