ssm分页增删改查

怼烎@ 2022-02-19 07:27 386阅读 0赞

ssm分页增删改查,博主技术有限,暂时就这样啦….

如果觉得文章不错,对你有帮助,请作者喝杯咖啡,谢谢!如果对您有帮助 ,请多多支持.多少都是您的心意与支持,一分也是爱,再次感谢!!!打开支付宝首页搜“556723462”领红包,领到大红包的小伙伴赶紧使用哦!感谢大家的支持!您的支持,我会继续分享更多的文章,欢迎关注!

70

先看效果图如下:里面的人物都是博主一 个一个手敲的。三国迷一个…哈哈

原码下载地址:https://download.csdn.net/download/qq_30764991/11117980

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMwNzY0OTkx_size_16_color_FFFFFF_t_70watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMwNzY0OTkx_size_16_color_FFFFFF_t_70 1

项目结构图:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMwNzY0OTkx_size_16_color_FFFFFF_t_70 2

数据库表与数据:

  1. CREATE TABLE `tb_user` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `userName` varchar(40) DEFAULT NULL,
  4. `password` varchar(100) DEFAULT NULL,
  5. `email` varchar(40) DEFAULT NULL,
  6. `phone` varchar(40) DEFAULT NULL,
  7. `roleName` varchar(40) DEFAULT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8;
  10. INSERT INTO `tb_user` VALUES ('7', '张飞', '123456', '123456@qq.com', '10086', '将军');
  11. INSERT INTO `tb_user` VALUES ('14', '赵云', '123456', '10086@qq.com', '2154', '将军');
  12. INSERT INTO `tb_user` VALUES ('15', '刘备', '123456', '215454@qq.com', '213234554', '主公');
  13. INSERT INTO `tb_user` VALUES ('16', '曹操', '123456', '21245454@qq.com', '2154587', '主公');
  14. INSERT INTO `tb_user` VALUES ('17', '曹仁', '123456', '54578787@qq.com', '2145784', '大将');
  15. INSERT INTO `tb_user` VALUES ('18', '许褚', '123456', '545484@qq.com', '54584@qq.com', '大将');
  16. INSERT INTO `tb_user` VALUES ('19', '孙权', '123456', '2154545@qq.com', '2148454', '主公');
  17. INSERT INTO `tb_user` VALUES ('20', '陆逊', '123456', '21547787@qq.com', '2124554', '主帅');
  18. INSERT INTO `tb_user` VALUES ('21', '黄忠', '123456', '21454877878@qq.com', '12124548787', '将军');
  19. INSERT INTO `tb_user` VALUES ('22', '周瑜', '123456', '1245787@qq.com', '2115457877', '主帅');
  20. INSERT INTO `tb_user` VALUES ('23', '诸葛亮', '123456', '5454545@qq.com', '10086', '军师');
  21. INSERT INTO `tb_user` VALUES ('25', '魏延', '123456', '15454545@qq.com', '145755454', '大将');
  22. INSERT INTO `tb_user` VALUES ('26', '夏侯惇', '123456', '54578787@qq.com', '121454575', '将军');
  23. INSERT INTO `tb_user` VALUES ('27', '张苞', '123456', '123456@qq.com', '25454', '大将');
  24. INSERT INTO `tb_user` VALUES ('28', '关欣', '123456', '1215545@qq.com', '124545545', '大将');
  25. INSERT INTO `tb_user` VALUES ('29', '曹植', '123456', '245454@qq.com', '545451', '主公');
  26. INSERT INTO `tb_user` VALUES ('30', '曹丕', '123456', '21545454@qq.com', '2465446', '主公');
  27. INSERT INTO `tb_user` VALUES ('31', '孙尚香', '123456', '545451@qq.com', '545452121', '主公');
  28. INSERT INTO `tb_user` VALUES ('32', '刘婵', '123456', '454547454@qq.com', '11244541221', '主公');
  29. INSERT INTO `tb_user` VALUES ('33', '张辽', '123456', '2144545@qq.com', '12154548', '大将');
  30. INSERT INTO `tb_user` VALUES ('34', '马岱', '123456', '1211245454@qq.com', '12124548787', '大将');

ssm配置如下:

spring-dao.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://www.springframework.org/schema/context
  7. http://www.springframework.org/schema/context/spring-context.xsd">
  8. <!-- 配置整合mybatis过程 -->
  9. <!-- 1.配置数据库相关参数properties的属性:${url} -->
  10. <context:property-placeholder location="classpath:jdbc.properties" />
  11. <!-- 2.数据库连接池 -->
  12. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  13. <!-- 配置连接池属性 -->
  14. <property name="driverClass" value="${jdbc.driver}" />
  15. <property name="jdbcUrl" value="${jdbc.url}" />
  16. <property name="user" value="${jdbc.username}" />
  17. <property name="password" value="${jdbc.password}" />
  18. <!-- c3p0连接池的私有属性 -->
  19. <property name="maxPoolSize" value="30" />
  20. <property name="minPoolSize" value="10" />
  21. <!-- 关闭连接后不自动commit -->
  22. <property name="autoCommitOnClose" value="false" />
  23. <!-- 获取连接超时时间 -->
  24. <property name="checkoutTimeout" value="10000" />
  25. <!-- 当获取连接失败重试次数 -->
  26. <property name="acquireRetryAttempts" value="2" />
  27. </bean>
  28. <!-- 3.配置SqlSessionFactory对象 -->
  29. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  30. <!-- 注入数据库连接池 -->
  31. <property name="dataSource" ref="dataSource" />
  32. <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
  33. <property name="configLocation" value="classpath:mybatis-config.xml" />
  34. <!-- 扫描entity包 使用别名 -->
  35. <property name="typeAliasesPackage" value="cn.com.entity" />
  36. <!-- 扫描sql配置文件:mapper需要的xml文件 -->
  37. <property name="mapperLocations" value="classpath:mapper/*.xml" />
  38. </bean>
  39. <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
  40. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  41. <!-- 注入sqlSessionFactory -->
  42. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
  43. <!-- 给出需要扫描Dao接口包 -->
  44. <property name="basePackage" value="cn.com.dao" />
  45. </bean>
  46. </beans>

spring-service.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/tx
  11. http://www.springframework.org/schema/tx/spring-tx.xsd">
  12. <!-- 扫描service包下所有使用注解的类型 -->
  13. <context:component-scan base-package="cn.com.service" />
  14. <!-- 配置事务管理器 -->
  15. <bean id="transactionManager"
  16. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  17. <!-- 注入数据库连接池 -->
  18. <property name="dataSource" ref="dataSource" />
  19. </bean>
  20. <!-- 配置基于注解的声明式事务 -->
  21. <tx:annotation-driven transaction-manager="transactionManager" />
  22. </beans>

spring-web.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/mvc
  11. http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
  12. <!-- 配置SpringMVC -->
  13. <!-- 1.开启SpringMVC注解模式 -->
  14. <!-- 简化配置:
  15. (1)自动注册DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter
  16. (2)提供一些列:数据绑定,数字和日期的format @NumberFormat, @DateTimeFormat, xml,json默认读写支持
  17. -->
  18. <mvc:annotation-driven />
  19. <!-- 2.静态资源默认servlet配置
  20. (1)加入对静态资源的处理:js,gif,png
  21. (2)允许使用"/"做整体映射
  22. -->
  23. <mvc:default-servlet-handler/>
  24. <!-- 3.配置jsp 显示ViewResolver -->
  25. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  26. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  27. <property name="prefix" value="/WEB-INF/views/" />
  28. <property name="suffix" value=".jsp" />
  29. </bean>
  30. <!-- 4.扫描web相关的bean -->
  31. <context:component-scan base-package="cn.com.controller" />
  32. </beans>

jdbc.properties

  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://127.0.0.1:3306/ssmdemo
  3. jdbc.username=root
  4. jdbc.password=123456

logback.xml日志

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <configuration debug="true">
  3. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  4. <encoder>
  5. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  6. </encoder>
  7. </appender>
  8. <!--开启debug日志模式,在控制台打印日志-->
  9. <root level="debug">
  10. <appender-ref ref="STDOUT" />
  11. </root>
  12. </configuration>

mybatis-config.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- 配置全局属性 -->
  7. <settings>
  8. <!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->
  9. <setting name="useGeneratedKeys" value="true" />
  10. <!-- 使用列别名替换列名 默认:true -->
  11. <setting name="useColumnLabel" value="true" />
  12. <!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} -->
  13. <setting name="mapUnderscoreToCamelCase" value="true" />
  14. </settings>
  15. </configuration>

web.xml配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  3. <display-name>ssm-demo</display-name>
  4. <!-- 配置DispatcherServlet -->
  5. <servlet>
  6. <servlet-name>myspringmvc-dispatcher</servlet-name>
  7. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  8. <!-- 配置springMVC需要加载的配置文件
  9. spring-dao.xml,spring-service.xml,spring-web.xml
  10. Mybatis - > spring -> springmvc
  11. -->
  12. <init-param>
  13. <param-name>contextConfigLocation</param-name>
  14. <param-value>classpath:Spring/spring-*.xml</param-value>
  15. </init-param>
  16. </servlet>
  17. <servlet-mapping>
  18. <servlet-name>myspringmvc-dispatcher</servlet-name>
  19. <!-- 默认匹配所有的请求 -->
  20. <url-pattern>/</url-pattern>
  21. </servlet-mapping>
  22. <!-- 编码过滤器 -->
  23. <filter>
  24. <filter-name>encodingFilter</filter-name>
  25. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  26. <init-param>
  27. <param-name>encoding</param-name>
  28. <param-value>UTF-8</param-value>
  29. </init-param>
  30. </filter>
  31. <filter-mapping>
  32. <filter-name>encodingFilter</filter-name>
  33. <url-pattern>/*</url-pattern>
  34. </filter-mapping>
  35. </web-app>

Ok,至此,以上ssm框架就搭建好了,这边博主就不测试了,肯定是Ok的。

接下来就是写相应的代码:代码开发流程:entity—>dao—(对应的mapper映射sql语句)>service>serviceimpl—>controller。

entity实体类:

  1. package cn.com.entity;
  2. /**
  3. * 用户实体类
  4. */
  5. public class User {
  6. private Integer id;
  7. private String username;
  8. private String password;
  9. private String email;
  10. private String phone;
  11. private String rolename;
  12. public Integer getId() {
  13. return id;
  14. }
  15. public User() {
  16. super();
  17. }
  18. public User(String username, String password, String email, String phone, String rolename) {
  19. super();
  20. this.username = username;
  21. this.password = password;
  22. this.email = email;
  23. this.phone = phone;
  24. this.rolename = rolename;
  25. }
  26. public void setId(Integer id) {
  27. this.id = id;
  28. }
  29. public String getUsername() {
  30. return username;
  31. }
  32. public void setUsername(String username) {
  33. this.username = username == null ? null : username.trim();
  34. }
  35. public String getPassword() {
  36. return password;
  37. }
  38. public void setPassword(String password) {
  39. this.password = password == null ? null : password.trim();
  40. }
  41. public String getEmail() {
  42. return email;
  43. }
  44. public void setEmail(String email) {
  45. this.email = email == null ? null : email.trim();
  46. }
  47. public String getPhone() {
  48. return phone;
  49. }
  50. public void setPhone(String phone) {
  51. this.phone = phone == null ? null : phone.trim();
  52. }
  53. public String getRolename() {
  54. return rolename;
  55. }
  56. public void setRolename(String rolename) {
  57. this.rolename = rolename == null ? null : rolename.trim();
  58. }
  59. @Override
  60. public String toString() {
  61. return "User [id=" + id + ", username=" + username + ", password=" + password + ", email=" + email + ", phone="
  62. + phone + ", rolename=" + rolename + "]";
  63. }
  64. }

PageBean分页实体类:

  1. package cn.com.entity;
  2. import java.util.List;
  3. /**
  4. * 分页实体类
  5. */
  6. public class PageBean<T> {
  7. private int currPage;//当前页数
  8. private int pageSize;//每页显示的记录数
  9. private int totalCount;//总记录数
  10. private int totalPage;//总页数
  11. private List<T> lists;//每页的显示的数据
  12. public PageBean() {
  13. super();
  14. }
  15. public int getCurrPage() {
  16. return currPage;
  17. }
  18. public void setCurrPage(int currPage) {
  19. this.currPage = currPage;
  20. }
  21. public int getPageSize() {
  22. return pageSize;
  23. }
  24. public void setPageSize(int pageSize) {
  25. this.pageSize = pageSize;
  26. }
  27. public int getTotalCount() {
  28. return totalCount;
  29. }
  30. public void setTotalCount(int totalCount) {
  31. this.totalCount = totalCount;
  32. }
  33. public int getTotalPage() {
  34. return totalPage;
  35. }
  36. public void setTotalPage(int totalPage) {
  37. this.totalPage = totalPage;
  38. }
  39. public List<T> getLists() {
  40. return lists;
  41. }
  42. public void setLists(List<T> lists) {
  43. this.lists = lists;
  44. }
  45. }

userDao

  1. package cn.com.dao;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import cn.com.entity.User;
  5. public interface UserDao {
  6. /**
  7. * 根据主键删除一条用户数据
  8. * @param id
  9. * @return
  10. */
  11. int deleteByPrimaryKey(Integer id);
  12. /**
  13. * 插入一条用户数据 ,可以不完整
  14. * @param record
  15. * @return
  16. */
  17. int insertSelective(User record);
  18. /**
  19. * 根据主键查询一条用户数据
  20. * @param id
  21. * @return
  22. */
  23. User selectByPrimaryKey(Integer id);
  24. /**
  25. * 用户登录
  26. * @param record
  27. * @return
  28. */
  29. User loginByUserNameAndPassword(User record);
  30. /**
  31. * 根据主键更新一条用户数据,可以不完整 -
  32. * @param record
  33. * @return
  34. */
  35. int updateByPrimaryKeySelective(User record);
  36. /**
  37. * 查询所有用户数据
  38. * @return
  39. */
  40. List<User> selectUserList();
  41. /**
  42. * 查询用户记录总数
  43. * @return
  44. */
  45. int selectCount();
  46. /**
  47. * 分页操作,调用findByPage limit分页方法
  48. * @param map
  49. * @return
  50. */
  51. List<User> findByPage(HashMap<String,Object> map);
  52. }

UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="cn.com.dao.UserDao">
  4. <!-- 先定义一个Interface,UserMapper,然后Mapper文件的namespace指向的就是这个Interface, UserInterface里定义的方法和UserMapper.xml文件中的一样,
  5. 然后代码里直接使用接口 -->
  6. <resultMap id="BaseResultMap" type="cn.com.entity.User">
  7. <id column="id" property="id" jdbcType="INTEGER" />
  8. <result column="userName" property="username" jdbcType="VARCHAR" />
  9. <result column="password" property="password" jdbcType="VARCHAR" />
  10. <result column="email" property="email" jdbcType="VARCHAR" />
  11. <result column="phone" property="phone" jdbcType="VARCHAR" />
  12. <result column="roleName" property="rolename" jdbcType="VARCHAR" />
  13. </resultMap>
  14. <sql id="Base_Column_List">
  15. id, userName, password, email, phone, roleName
  16. </sql>
  17. <!--根据主键查询一条用户数据 -->
  18. <select id="selectByPrimaryKey" resultMap="BaseResultMap"
  19. parameterType="java.lang.Integer">
  20. select
  21. <include refid="Base_Column_List" />
  22. from tb_user
  23. where id = #{id,jdbcType=INTEGER}
  24. </select>
  25. <!--用户登录 -->
  26. <select id="loginByUserNameAndPassword" resultMap="BaseResultMap" parameterType="cn.com.entity.User">
  27. select
  28. <include refid="Base_Column_List" />
  29. from tb_user
  30. where
  31. userName = #{username}
  32. and password = #{password}
  33. </select>
  34. <!-- 根据分页数据start 和size查询数据 -->
  35. <select id="findByPage" parameterType="Map" resultMap="BaseResultMap">
  36. select
  37. <include refid="Base_Column_List" />
  38. from tb_user
  39. <if test="start!=null and size!=null">
  40. limit #{start},#{size}
  41. </if>
  42. </select>
  43. <!--查询所有用户数据 -->
  44. <select id="selectUserList" resultType="cn.com.entity.User">
  45. select
  46. <include refid="Base_Column_List" />
  47. from tb_user
  48. </select>
  49. <!-- 查询用户记录总数 -->
  50. <select id="selectCount" resultType="int">
  51. select count(*) from tb_user
  52. </select>
  53. <!--根据主键删除一条用户数据 -->
  54. <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
  55. delete from tb_user
  56. where id = #{id,jdbcType=INTEGER}
  57. </delete>
  58. <!--插入一条完整用户数据 -->
  59. <insert id="insert" parameterType="cn.com.entity.User">
  60. insert into tb_user (id, userName, password,
  61. email, phone, roleName
  62. )
  63. values (#{id,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR},
  64. #{password,jdbcType=VARCHAR},
  65. #{email,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{rolename,jdbcType=VARCHAR}
  66. )
  67. </insert>
  68. <!--插入一条用户数据 ,可以不完整 -->
  69. <insert id="insertSelective" parameterType="cn.com.entity.User">
  70. insert into tb_user
  71. <trim prefix="(" suffix=")" suffixOverrides=",">
  72. <if test="id != null">
  73. id,
  74. </if>
  75. <if test="username != null">
  76. userName,
  77. </if>
  78. <if test="password != null">
  79. password,
  80. </if>
  81. <if test="email != null">
  82. email,
  83. </if>
  84. <if test="phone != null">
  85. phone,
  86. </if>
  87. <if test="rolename != null">
  88. roleName,
  89. </if>
  90. </trim>
  91. <trim prefix="values (" suffix=")" suffixOverrides=",">
  92. <if test="id != null">
  93. #{id,jdbcType=INTEGER},
  94. </if>
  95. <if test="username != null">
  96. #{username,jdbcType=VARCHAR},
  97. </if>
  98. <if test="password != null">
  99. #{password,jdbcType=VARCHAR},
  100. </if>
  101. <if test="email != null">
  102. #{email,jdbcType=VARCHAR},
  103. </if>
  104. <if test="phone != null">
  105. #{phone,jdbcType=VARCHAR},
  106. </if>
  107. <if test="rolename != null">
  108. #{rolename,jdbcType=VARCHAR},
  109. </if>
  110. </trim>
  111. </insert>
  112. <!--根据主键更新一条用户数据,可以不完整 -->
  113. <update id="updateByPrimaryKeySelective" parameterType="cn.com.entity.User">
  114. update tb_user
  115. <set>
  116. <if test="username != null">
  117. userName = #{username,jdbcType=VARCHAR},
  118. </if>
  119. <if test="password != null">
  120. password = #{password,jdbcType=VARCHAR},
  121. </if>
  122. <if test="email != null">
  123. email = #{email,jdbcType=VARCHAR},
  124. </if>
  125. <if test="phone != null">
  126. phone = #{phone,jdbcType=VARCHAR},
  127. </if>
  128. <if test="rolename != null">
  129. roleName = #{rolename,jdbcType=VARCHAR},
  130. </if>
  131. </set>
  132. where id = #{id,jdbcType=INTEGER}
  133. </update>
  134. <!--根据主键更新一条用户数据 -->
  135. <update id="updateByPrimaryKey" parameterType="cn.com.entity.User">
  136. update tb_user
  137. set userName = #{username,jdbcType=VARCHAR},
  138. password = #{password,jdbcType=VARCHAR},
  139. email = #{email,jdbcType=VARCHAR},
  140. phone = #{phone,jdbcType=VARCHAR},
  141. roleName = #{rolename,jdbcType=VARCHAR}
  142. where id = #{id,jdbcType=INTEGER}
  143. </update>
  144. </mapper>

userSerevice

  1. package cn.com.service;
  2. import java.util.List;
  3. import cn.com.entity.PageBean;
  4. import cn.com.entity.User;
  5. /**
  6. * User类业务层接口
  7. */
  8. public interface UserService {
  9. int deleteByPrimaryKey(Integer id);
  10. int insertSelective(User record);
  11. User selectByPrimaryKey(Integer id);
  12. User loginByUserNameAndPassword(User record);
  13. List<User> selectUserList();
  14. int selectCount();
  15. int updateByPrimaryKeySelective(User record);
  16. PageBean<User> findByPage(int currentPage);
  17. }

userServiceImpl

  1. package cn.com.service.impl;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import javax.annotation.Resource;
  5. import org.springframework.stereotype.Service;
  6. import cn.com.dao.UserDao;
  7. import cn.com.entity.PageBean;
  8. import cn.com.entity.User;
  9. import cn.com.service.UserService;
  10. /**
  11. * User类业务层实现类
  12. */
  13. @Service("userService")
  14. public class UserServiceImpl implements UserService {
  15. @Resource
  16. private UserDao userDao;
  17. @Override
  18. public int deleteByPrimaryKey(Integer id) {
  19. return userDao.deleteByPrimaryKey(id);
  20. }
  21. @Override
  22. public int insertSelective(User record) {
  23. return userDao.insertSelective(record);
  24. }
  25. @Override
  26. public User selectByPrimaryKey(Integer id) {
  27. return userDao.selectByPrimaryKey(id);
  28. }
  29. @Override
  30. public int updateByPrimaryKeySelective(User record) {
  31. return userDao.updateByPrimaryKeySelective(record);
  32. }
  33. @Override
  34. public List<User> selectUserList() {
  35. return userDao.selectUserList();
  36. }
  37. @Override
  38. public int selectCount() {
  39. return userDao.selectCount();
  40. }
  41. @Override
  42. public User loginByUserNameAndPassword(User record) {
  43. return userDao.loginByUserNameAndPassword(record);
  44. }
  45. @Override
  46. public PageBean<User> findByPage(int currentPage) {//currPage当前页数
  47. //创建HashMap对象封装
  48. HashMap<String,Object> map = new HashMap<String,Object>();
  49. //创建一个分页对象
  50. PageBean<User> pageBean = new PageBean<User>();
  51. //封装当前页数
  52. pageBean.setCurrPage(currentPage);
  53. //每页显示的数据
  54. int pageSize=10;
  55. pageBean.setPageSize(pageSize);
  56. //封装总记录数
  57. int totalCount = userDao.selectCount();
  58. pageBean.setTotalCount(totalCount);
  59. //封装总页数
  60. double tc = totalCount;
  61. Double num =Math.ceil(tc/pageSize);//向上取整,总记录数除以当前每页显示数
  62. pageBean.setTotalPage(num.intValue());
  63. map.put("start",(currentPage-1)*pageSize);//(当前页数-1)*每页显示数
  64. map.put("size", pageBean.getPageSize());//每页显示的记录数
  65. //封装每页显示的数据
  66. List<User> lists = userDao.findByPage(map);
  67. pageBean.setLists(lists);
  68. return pageBean;
  69. }
  70. }

userController

  1. package cn.com.controller;
  2. import java.util.List;
  3. import javax.annotation.Resource;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.ui.Model;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RequestParam;
  8. import org.springframework.web.bind.annotation.SessionAttributes;
  9. import cn.com.entity.User;
  10. import cn.com.service.UserService;
  11. @SessionAttributes("currentUser")
  12. @Controller
  13. public class UserController {
  14. @Resource
  15. private UserService userService;
  16. /**
  17. * 用户登录
  18. * @param user
  19. * @param request
  20. * @return
  21. * @throws Exception
  22. */
  23. @RequestMapping("/login")
  24. public String login(@RequestParam("userName")String userName,
  25. @RequestParam("password")String password,Model model) throws Exception{
  26. //创建一个用户对象,封装对象
  27. User user = new User();
  28. user.setUsername(userName);
  29. user.setPassword(password);
  30. //调用根据姓名与密码查询
  31. User userresult = userService.loginByUserNameAndPassword(user);
  32. //对结果进行判断,如果用户名与密码不为空,登录成功
  33. if(userresult!=null){
  34. //登录成功,查询所有
  35. List<User> lists = userService.selectUserList();
  36. //把查询到的所有结果回显给前端main.jsp
  37. model.addAttribute("userLists", lists);//回显用户信息
  38. //把获取的用户名传回给currentUser
  39. model.addAttribute("currentUser", userresult.getUsername());
  40. //重定向到main.jsp页面
  41. return "redirect:main";
  42. }
  43. return "error";
  44. }
  45. /**
  46. * @param currentPage
  47. * @param model
  48. * @return
  49. */
  50. @RequestMapping("/main")
  51. public String main(@RequestParam(value="currentPage",defaultValue="1",required=false)int currentPage,Model model){
  52. //分页查询
  53. model.addAttribute("pagemsg", userService.findByPage(currentPage));//回显分页数据
  54. //返回到主页
  55. return "main";
  56. }
  57. /**
  58. * 跳到编辑页面
  59. * @param currentPage
  60. * @param model
  61. * @return
  62. */
  63. @RequestMapping("/edit")
  64. public String editpage(@RequestParam("id") int id,
  65. Model model){
  66. User user =userService.selectByPrimaryKey(id);
  67. model.addAttribute("returnUser", user);
  68. return "edit";
  69. }
  70. /**
  71. * 保存用户数据
  72. * @return
  73. */
  74. @RequestMapping("/save")
  75. public String save(User user){
  76. System.out.println(user.toString());
  77. //如果获取的用户id为空
  78. if(user.getId()==null){
  79. //id为null是保存,调用增加方法
  80. userService.insertSelective(user);
  81. }else{
  82. //有id值为修改,否则调用修改的方法
  83. userService.updateByPrimaryKeySelective(user);
  84. }
  85. //重定向到主页
  86. return "redirect:main";
  87. }
  88. /**
  89. * 删除用户数据
  90. * @param id
  91. * @return
  92. */
  93. @RequestMapping("/delete")
  94. public String delete(@RequestParam("id") int id){
  95. userService.deleteByPrimaryKey(id);
  96. return "redirect:main";
  97. }
  98. /**
  99. * 添加一个用户数据
  100. * @return
  101. */
  102. @RequestMapping("/add")
  103. public String add(Model model){
  104. model.addAttribute("returnUser", new User());
  105. return "edit";
  106. }
  107. }

好了,最后是前端页面:

index.jsp 简单的登录页面:

  1. <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>Index.jsp</title>
  9. <body>
  10. <h2>欢迎登陆</h2>
  11. <form action="login" method="post">
  12. 用户名:<input type="text" name="userName"/><br>
  13. 密 码:<input type="password" name="password"/><br>
  14. <input type="submit" value="登录"/>
  15. </form>
  16. </body>
  17. </html>

main.jsp 主页展示页:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>ssm分页的主页</title>
  9. <style type="text/css">
  10. td{text-align: center;}
  11. .td2{text-align: right;}
  12. .table1{
  13. border:1px solid #ddd;
  14. width:900px;
  15. }
  16. thead{
  17. background-color:lightblue;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. 欢迎你:${currentUser}
  23. <br>
  24. <%-- 当前用户:${pageScope.currentUser}<!-- (只能在同一个页面中使用) --> <br>
  25. 当前用户:${requestScope.currentUser}-${roleName} 有重定向数据就访问不到<br>
  26. 当前用户:${sessionScope.currentUser}-${roleName} 可以使用<br> --%>
  27. <hr>
  28. <a href="add"> 添加用户</a><br>
  29. <c:if test="${empty requestScope.pagemsg}">
  30. 没有任何用户信息!
  31. </c:if>
  32. <c:if test="${!empty requestScope.pagemsg}">
  33. <table border="1" cellpadding="10" cellspacing="0" class="table1">
  34. <thead>
  35. <tr>
  36. <td>编号</td>
  37. <td>用户名</td>
  38. <td>密码</td>
  39. <td>邮件</td>
  40. <td>联系电话</td>
  41. <td>职位</td>
  42. <td>修改</td>
  43. <td>删除</td>
  44. </tr>
  45. </thead>
  46. <!--lists是后端传回的所有的结果 -->
  47. <c:forEach items="${requestScope.pagemsg.lists}" var="u">
  48. <tr>
  49. <th>${u.id }</th>
  50. <th>${u.username }</th>
  51. <th>${u.password }</th>
  52. <th>${u.email }</th>
  53. <th>${u.phone }</th>
  54. <th>${u.rolename }</th>
  55. <th><a href="edit?id=${u.id}">修改</a></th>
  56. <th><a href="delete?id=${u.id}" onclick="return confirm('确定要删除吗')">删除</a></th>
  57. </tr>
  58. </c:forEach>
  59. </table>
  60. </c:if>
  61. <table border="0" cellspacing="0" cellpadding="0" width="900px">
  62. <tr>
  63. <td class="td2">
  64. <span>第${requestScope.pagemsg.currPage }/ ${requestScope.pagemsg.totalPage}页</span>
  65. <span>总记录数:${requestScope.pagemsg.totalCount } 每页显示:${requestScope.pagemsg.pageSize}</span>
  66. <span>
  67. <c:if test="${requestScope.pagemsg.currPage != 5}">
  68. <a href="${pageContext.request.contextPath }/main?currentPage=1">[首页]</a>
  69. <a href="${pageContext.request.contextPath }/main?currentPage=${requestScope.pagemsg.currPage-1}">[上一页]</a>
  70. </c:if>
  71. <c:if test="${requestScope.pagemsg.currPage != requestScope.pagemsg.totalPage}">
  72. <a href="${pageContext.request.contextPath }/main?currentPage=${requestScope.pagemsg.currPage+1}">[下一页]</a>
  73. <a href="${pageContext.request.contextPath }/main?currentPage=${requestScope.pagemsg.totalPage}">[尾页]</a>
  74. </c:if>
  75. </span>
  76. </td>
  77. </tr>
  78. </table>
  79. </body>
  80. </html>

edit.jsp编辑页:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  4. <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  9. <title>编辑页面</title>
  10. </head>
  11. <body>
  12. 欢迎你:${currentUser}
  13. <hr>
  14. <form:form action="save" method="post" modelAttribute="returnUser">
  15. <form:hidden path="id"/>
  16. 用户名:<form:input path="username" /><br>
  17. 密码:<form:input path="password" /><br>
  18. 邮件:<form:input path="email" /><br>
  19. 联系电话:<form:input path="phone" /><br>
  20. 职位:<form:select path="rolename">
  21. <form:option value="">请选择职位</form:option>
  22. <form:option value="主公">主公</form:option>
  23. <form:option value="主帅">主帅</form:option>
  24. <form:option value="军师">军师</form:option>
  25. <form:option value="将军">将军</form:option>
  26. <form:option value="大将">大将</form:option>
  27. </form:select><br>
  28. <input type="submit" value="提交"/>
  29. </form:form>
  30. </body>
  31. </html>

error.jsp 错误友好提示页面:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <a href="${pageContext.request.contextPath }/index.jsp">登录发生错误,请重新登录</a>
  11. </body>
  12. </html>

Ok,至此整个完整的ssm分页增删改查就全部写好了,亲测可用。如果自己写的还是不行的话,那么博主把自己代码上传至csdn提供大家参考!

发表评论

表情:
评论列表 (有 0 条评论,386人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ssm整合增删

    总体的ssm整合增删改查的思想: > 1、一般我们做增删改查的项目的时候,我们可以先从数据层开始写,在数据层把增删改查的功能方法写好,然后再写业务逻辑层的逻辑,业务逻辑层接口

    相关 ssm登录注册增删

    >     此项目原本是两个不同的项目,博主从网上找的,都是基于ide开发的项目,然当我导入ide与eclipse却运行不了,没办法只能博主自己重新构建项目,参考这两个不同的项

    相关 ssm增删

    ssm分页增删改查,博主技术有限,暂时就这样啦.... > 如果觉得文章不错,对你有帮助,请作者喝杯咖啡,谢谢!如果对您有帮助 ,请多多支持.多少都是您的心意与支持,一分也