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

让我来详细讲解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日

相关文章

  • Struts2实现CRUD(增 删 改 查)功能实例代码

    实现CRUD(增删改查)功能是Web开发中最基本的功能之一,本文将详细讲解如何使用Struts2框架实现该功能。 步骤一:新建项目并引入依赖 首先,在Eclipse中新建一个动态Web项目,命名为:Struts2CRUD。接着,新增一个名为“lib”的文件夹,用于存放所需的Jar包。然后,将以下Jar包复制到该文件夹中: commons-lang3-x.x.…

    Java 2023年5月20日
    00
  • java实现向有序数组中插入一个元素实例

    当需要向有序数组中插入一个新的元素时,我们可以使用以下步骤: 步骤 1:创建有序数组 首先,我们需要创建一个已经排好序的数组。可以使用Java中的数组来完成,或者也可以使用List等其他数据结构。 步骤 2:确定插入位置 在插入新元素之前,我们需要确定新元素应该插入的位置。由于数组已经排好序,我们可以使用二分查找来找到插入位置,使用Java提供的Arrays…

    Java 2023年5月26日
    00
  • springBoot整合RocketMQ及坑的示例代码

    接下来我将详细讲解“springBoot整合RocketMQ及坑的示例代码”的完整攻略。 一、背景 在我们使用Spring Boot构建分布式系统时,经常会用到消息队列。RocketMQ是阿里巴巴的开源消息中间件,它支持事务消息,并且具有高吞吐量、高可用性、高可靠性等特点,十分适合在分布式系统中使用。本文将介绍如何在Spring Boot项目中整合Rocke…

    Java 2023年5月26日
    00
  • java类型生命周期的详细解析

    Java类型生命周期的详细解析 Java语言的类型生命周期包括了以下几个阶段:加载(Loading)、链接(Linking)、初始化(Initialization)、使用(Usage)和卸载(Unloading)。在本文中,我们将详细解析Java类型生命周期的每个阶段。 1. 加载 加载阶段是指Java虚拟机(JVM)在需要使用一个类型时,会首先检查该类型是…

    Java 2023年5月26日
    00
  • 微信小程序文章详情页跳转案例详解

    微信小程序文章详情页跳转案例详解 本攻略介绍如何在微信小程序中实现文章详情页跳转。下文将详细讲解该功能的实现步骤和注意事项,同时提供两个示例方便理解。 实现步骤 要实现文章详情页跳转,需要按以下步骤进行: 在pages文件夹中创建article文件夹,并在其中创建article.wxml、article.wxss、article.js、article.jso…

    Java 2023年5月23日
    00
  • Java实现简单碰撞检测

    以下是Java实现简单碰撞检测的完整攻略。 步骤一:了解碰撞检测 在实现碰撞检测之前,我们需要先了解什么是碰撞检测。碰撞检测是指检测两个物体之间是否有重叠部分的过程。在游戏开发中,碰撞检测是非常常见的一项功能,因为游戏中的物体需要相互交互。 步骤二:创建游戏窗口和物体 在这个示例中,我们创建一个简单的窗口,并在窗口中添加两个对象,分别是一个球和一个长方形。具…

    Java 2023年5月19日
    00
  • 浅析Java.IO输入输出流 过滤流 buffer流和data流

    浅析Java.IO输入输出流 过滤流 Buffer流和Data流 什么是Java IO Java IO 是针对输入和输出数据的流处理 API。Java IO 库中包含了一组类和接口,提供了对标准输入、输出和文件系统的访问。 在 Java IO 中,数据承载的载体为流(stream)。流是指在数据源和数据目的地之间建立起的一条虚拟的传输通道,数据按照字节的方式…

    Java 2023年5月26日
    00
  • Spring Boot高效数据聚合之道深入讲解

    Spring Boot高效数据聚合之道深入讲解 在本文中,我们将重点讨论如何使用Spring Boot高效地对数据进行聚合,并提供两个示例。 1. 聚合数据 聚合数据可以通过多种方式完成,而Spring Boot提供了多种机制来高效地将数据聚合在一起。下面列出了一些流行的方法: SQL JOIN:在关系型数据库中使用联接来合并数据。 NoSQL聚合管道:使用…

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