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日

相关文章

  • Spring MVC 关于controller的字符编码问题

    首先,要解决Spring MVC中Controller的字符编码问题,可以通过配置字符编码过滤器来实现。具体操作如下: 在web.xml中添加字符编码过滤器 在web.xml文件中,添加以下代码配置字符编码过滤器,将所有请求的字符编码设置为UTF-8: <filter> <filter-name>encodingFilter</…

    Java 2023年5月20日
    00
  • ResHacker怎么替换图标 ResHacker提取并保存avi图文步骤

    以下是关于“ResHacker怎么替换图标 ResHacker提取并保存avi图文步骤”的完整攻略: ResHacker怎么替换图标 如果你想要替换一个程序的图标,可以使用ResHacker工具。 1.首先要打开ResHacker工具,然后在菜单中选择“Open”,并选择要修改的程序。 2.选择要修改的程序后,你需要寻找其中的图标资源。可以通过在左侧的菜单中…

    Java 2023年5月26日
    00
  • Java并发编程之工具类Semaphore的使用

    接下来我将详细讲解Java并发编程中Semaphore工具类的使用。 Semaphore介绍 Semaphore是一种计数信号量,它可以用来控制同时访问某个特定资源的线程数量。 对于使用Semaphore的程序来说,如果控制的资源达到上限,请求资源的线程就会被阻塞。 Semaphore可以看做是一种更高级别的锁,它能够限制同时访问共享资源的线程数量。相比于锁…

    Java 2023年5月26日
    00
  • JVM调优的方法有哪些?

    JVM调优是保障应用性能的重中之重。它可以通过不同的方法来优化JVM,提升应用的性能。下面是JVM调优的方法。 JVM调优方法 优化JVM的参数设置 JVM的性能与调优参数密不可分。参数的设置可以通过启动时传递参数、修改配置文件、通过代码调用等方式。常用的参数设置包括: -Xms和-Xmx: 设置Java堆的最小和最大值 -XX:MaxPermSize: 设…

    Java 2023年5月10日
    00
  • 对Jpa中Entity关系映射中mappedBy的全面理解

    对于Jpa中Entity关系映射中mappedBy需要全面理解,可以按照以下攻略进行: 1. 什么是mappedBy? 在Jpa中,当一个实体类A与另一个实体类B产生关联时,需要进行定义。这种定义一般是通过在一个实体类中定义一个属性,该属性上使用@OneToMany、@OneToOne、@ManyToMany等注解实现的。而在另一个实体类中对应的属性通常会使…

    Java 2023年5月20日
    00
  • 详解使用Maven开发Web应用详细步骤

    下面详细讲解“详解使用Maven开发Web应用详细步骤”的完整攻略。 简介 本文将以Java Web项目为例,讲解如何使用Maven构建Web项目,包括项目创建、依赖管理、打包以及发布等方面。 步骤 1. 创建Maven项目 使用IDE或者通过命令行创建一个基于Maven的Web项目,其中pom.xml文件是Maven工程的管理中心,需要在其中添加相关的依赖…

    Java 2023年5月19日
    00
  • 详解Java常用工具类—泛型

    详解Java常用工具类—泛型 1.泛型概述 泛型(Generics)是JDK1.5版本引入的一个新特性,主要目的是解决Java集合中的类型安全问题。 泛型的核心思想是参数化类型,即将类型作为参数传递。使用泛型可以定义类、接口和方法,让它们可以接收任意类型的对象。 1.1 泛型类 在定义一个泛型类的时候,需要在类名后面加上尖括号,尖括号中的内容表示类型参数。例…

    Java 2023年5月26日
    00
  • 浅谈springMVC拦截器和过滤器总结

    以下是关于“浅谈SpringMVC拦截器和过滤器总结”的完整攻略,其中包含两个示例。 SpringMVC拦截器和过滤器总结 SpringMVC拦截器和过滤器是两种常用的Web开发技术,它们可以用于对请求进行拦截和处理。在本文中,我们将讲解SpringMVC拦截器和过滤器的实现原理及用法。 拦截器实现原理 SpringMVC拦截器是一种用于拦截请求的机制。在S…

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