SSM实现增删改查代码篇超级详细

什么是SSM?

ssm全称Spring+SpringMVC+MyBatis,是目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统

SSM项目创建

打开idea 点击文件 鼠标右键 点击新建项目

选择maven项目 点击下一步

 给项目取个名字 确定好项目要放到路径 点击完成

给项目添加框架支持添加(web网页)

选择web框架

 部署tomcat 选择本地

 部署项目 添加工件(把项目的war包部署上去)

 web框架添加后 就开始配置web.xml中的相关配置

 数据库表结构设计

SSM项目中所用到的相关配置文件

配置文件解析

spring的相关配置文件

 连接数据库的相关配置文件

 输出日志的相关配置

mybatis的相关配置文件

 spring mvc的相关配置文件

 配置文件的代码块展示

ApplicationContext.xml  spring的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/aop
                           http://www.springframework.org/schema/aop/spring-aop.xsd">

   <!-- 1.引入properties文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
   <!-- 2.配置数据源-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!--3.创建sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/> <!--name此处的name是指上面数据源的id-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/> <!--value表示引入mybatis配置文件的路径-->
    </bean>
   <!-- MapperScannerConfigurer-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="mapper"></property>
    </bean>

    <!--注解实现依赖注入    下面标签是用于扫描包的注解-->
    <context:component-scan base-package="mapper,service"/>

    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>  <!--开启注解-->
</beans>
 jdbc.properties 数据库连接配置文件
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ketai?serverTimezone=GMT-8&useUnicode=true&character=utf-8
jdbc.username=root
jdbc.password=root
log4j.properties 日志输出的配置文件
### 设置###
log4j.rootLogger = debug,stdout,logfile,error

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=log.log ###
log4j.appender.logfile = org.apache.log4j.DailyRollingFileAppender
### 这里不写路径就是在当前目录下创建日志文件 ###
log4j.appender.logfile.File = logs/log.log
log4j.appender.logfile.Append = true
log4j.appender.logfile.Threshold = DEBUG 
log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

###单独保存ERROR级别以上的异常到=error.log ###
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
### 这里不写路径就是在当前目录下创建日志文件 ###
log4j.appender.error.File =error.log 
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR 
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
mybatis-config.xml mybatis的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--1.加载jdbc.properties配置文件-->
    <properties resource="jdbc.properties"></properties>

    <!--2.设置(日志 缓存 自动匹配(autoMappingBehavior))-->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>

    <!--自动扫描pojo包下的所有类 默认别名就是类名 -->
    <typeAliases>
        <package name="pojo"/>
    </typeAliases>

    <!--将mapper文件引入 每增加一个就引入一个-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>
springmvc.xml spring的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
	http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/mvc
	http://www.springframework.org/schema/mvc/spring-mvc.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd">

<!--扫描包  会自动扫描到@Component-->
    <context:component-scan base-package="controller"/>
    <!--自动注册defaultAnnotationHandlerMapping 和AnnotationMethodHandlerAdapter两个bean  自动注册controller类中的映射器 适配器-->
    <mvc:annotation-driven/>

<!--2.配置视图-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="User/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

 SSM项目实现增删改查

整体的项目结构

 SSM增删改查代码展示(用户为例)

pojo 实体类  
@Data
public class Users {

  private Integer id;
  private String name;
  private String pwd;
}
mapper 文件映射类
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.UserMapper">

    <select id="searchAllUser" resultType="pojo.Users" parameterType="java.util.List">
        select *from users
    </select>

    <select id="selectById" resultType="pojo.Users" parameterType="java.lang.Integer">
        select *from users WHERE id=#{id}
    </select>


    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from users where id=#{id}
    </delete>

    <insert id="insertUser" parameterType="pojo.Users">
        INSERT INTO `users` (`id`, `name`, `pwd`) VALUES (#{id}, #{name}, #{pwd});
    </insert>
    
    <update id="updateUser" parameterType="pojo.Users">
      <!--  UPDATE `users` SET `name` = #{name}, `pwd` = #{pwd} WHERE `pwd` = #{id};-->
        update users
        <trim prefix="set" suffixOverrides=",">
            <if test="name != null">name=#{name},</if>
            <if test="pwd != null">pwd=#{pwd},</if>
        </trim>
        where id=#{id}
    </update>
</mapper>
mapper 接口
@Repository
public interface UserMapper {

    /**
     * 查询所有的学生信息
     * @return
     */
    List<Users>searchAllUser();


    /**
     * 删除学生信息
     * @param id
     * @return
     */
    Integer deleteUser(@Param("id") Integer id);


    /**
     * 新增学生信息
     * @param users
     * @return
     */
    Integer insertUser(Users users);

    /**
     * 根据id修改学生信息
     * @param users
     * @return
     */
    Integer updateUser(Users users);


    /**
     * 根据id查询学生信息
     * @param id
     * @return
     */
    Users selectById(@Param("id") Integer id);
}
service层

接口=========================================================================================
public interface UserService {

    /**
     * 查询所有的学生信息
     * @return
     */
    List<Users> searchAllUser();


    /**
     * 删除学生信息
     * @param id
     * @return
     */
    Integer deleteUser(@Param("id") Integer id);


    /**
     * 新增学生信息
     * @param users
     * @return
     */
    Integer insertUser(Users users);

    /**
     * 根据id修改学生信息
     * @param users
     * @return
     */
    Integer updateUser(Users users);


    /**
     * 根据id查询学生信息
     * @param id
     * @return
     */
    Users selectById(@Param("id") Integer id);
}

=-=====================================================================================
接口的实现类
@Service("User")
public class UserServiceImpl implements UserService{

    @Autowired
    private UserMapper userMapper;


    @Override
    public List<Users> searchAllUser() {
        return userMapper.searchAllUser();
    }

    @Override
    public Integer deleteUser(Integer id) {
        return userMapper.deleteUser(id);
    }

    @Override
    public Integer insertUser(Users users) {
        return userMapper.insertUser(users);
    }

    @Override
    public Integer updateUser(Users users) {
        return userMapper.updateUser(users);
    }

    @Override
    public Users selectById(Integer id) {
        return userMapper.selectById(id);
    }
}
controller 控制层
@Controller
public class UserController {

    @Autowired
     private UserService userService;

    /**
     * 查询所有用户信息
     * @param modelAndView
     * @return
     */
    @RequestMapping("/searchAllUser")
    public ModelAndView searchAllUser(ModelAndView modelAndView){
        List<Users>list=userService.searchAllUser();
        modelAndView.addObject("searchUser",list);
        modelAndView.setViewName("selectAllUser");
        return modelAndView;
    }

    /**
     * 新增用户信息
     * @param users
     * @return
     */
    @RequestMapping("/insertUser")
    public String insertUser(Users users){
        int count= userService.insertUser(users);
        if(count>0){
            System.out.println("新增成功!");
            return "redirect:/searchAllUser";
        }
        return "redirect:/searchAllUser";
    }

    /**
     * 删除用户信息
     * @param id
     * @return
     */
    @RequestMapping("/deleteUser")
    public String deleteUser(@Param("id") Integer id){
        int count= userService.deleteUser(id);
        if(count>0){
            System.out.println("删除用户信息成功!");
            return "redirect:/searchAllUser";
        }
        return "redirect:/searchAllUser";
    }


    /**
     * 修改用户信息
     * @param users
     * @return
     */
    @RequestMapping("/updateUser")
    public String updateUser(@Param("users") Users users){
          int count= userService.updateUser(users);
          if(count>0){
              System.out.println("修改成功!");
              return "redirect:/searchAllUser";
          }
        return "redirect:/searchAllUser";
    }

    /**
     * 根据id查询
     * @param id
     * @param modelAndView
     * @return
     */
    @RequestMapping("selectByIdUser")
    public ModelAndView selectByIdUser(@Param("id") Integer id,ModelAndView modelAndView){
        Users users= userService.selectById(id);
        if(users!=null){
            modelAndView.addObject("user",users);
            modelAndView.setViewName("updateUser");
            return modelAndView;
        }
        modelAndView.setViewName("404");
        return modelAndView;
    }
}
web 页面

全路径

全路径
==========================================================================================
<% String basePath =
        request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";%>
主页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% String basePath =
        request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";%>

<html>
<head>
    <title>查询用户信息的主页面</title>
</head>
<body>
<table border="1px">
    <tr>
        <td>编号</td>
        <td>姓名</td>
        <td>密码</td>
        <td>操作</td>
    </tr>
    <c:forEach items="${searchUser}" var="us">
        <tr>
            <td>${us.id}</td>
            <td>${us.name}</td>
            <td>${us.pwd}</td>
            <td>
                <a href="<%=basePath%>deleteUser?id=${us.id}">删除</a>
                <a href="<%=basePath%>selectByIdUser?id=${us.id}">修改</a>
            </td>
        </tr>
    </c:forEach>
</table>
<h3><a href="<%=basePath%>User/insertUser.jsp">新增用户</a></h3>
</body>
</html>
新增页面
<% String basePath =
        request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";%>

<html>
<head>
    <title>新增用户信息的页面</title>
</head>
<body>
<form action="<%=basePath%>insertUser">
    姓名:<input type="text" name="name">
    密码:<input type="text" name="pwd">
    <input type="submit" value="新增">
</form>
</body>
</html>
修改页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% String basePath =
        request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";%>
<html>
<head>
    <title>修改用户信息的页面</title>
</head>
<body>
<form action="<%=basePath%>updateUser">
    编号:<input type="text" name="id" value="${user.id}">
    姓名:<input type="text" name="name" value="${user.name}">
    密码:<input type="text" name="pwd" value="${user.pwd}">
    <input type="submit" value="修改">
</form>
</body>
</html>
404页面
<html>
<head>
    <title>404页面</title>
</head>
<body>
<h1>你的网络掉大海了</h1>
</body>
</html>
页面效果图

 

 

  • 7
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
SSM框架中,实现增删改查功能需要编写Controller、Service、Dao和Mapper四个部分的代码。下面是一个简单的示例: 1. 编写Controller层代码: ```java @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping("/findAll") public String findAll(Model model) { List<User> userList = userService.findAll(); model.addAttribute("userList", userList); return "userList"; } @RequestMapping("/add") public String add(User user) { userService.add(user); return "redirect:/user/findAll"; } @RequestMapping("/update") public String update(User user) { userService.update(user); return "redirect:/user/findAll"; } @RequestMapping("/delete") public String delete(int id) { userService.delete(id); return "redirect:/user/findAll"; } } ``` 2. 编写Service层代码: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public List<User> findAll() { return userDao.findAll(); } @Override public void add(User user) { userDao.add(user); } @Override public void update(User user) { userDao.update(user); } @Override public void delete(int id) { userDao.delete(id); } } ``` 3. 编写Dao层代码: ```java @Repository public interface UserDao { List<User> findAll(); void add(User user); void update(User user); void delete(int id); } ``` 4. 编写Mapper文件(UserDao.xml): ```xml <mapper namespace="com.example.dao.UserDao"> <select id="findAll" resultType="com.example.entity.User"> SELECT * FROM user </select> <insert id="add" parameterType="com.example.entity.User"> INSERT INTO user (name, age) VALUES (#{name}, #{age}) </insert> <update id="update" parameterType="com.example.entity.User"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="delete" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete> </mapper> ``` 以上代码示例演示了在SSM框架中实现增删改查功能的基本代码结构。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值