java+ssm 基础
来源:互联网 发布:js实现换肤功能 编辑:程序博客网 时间:2024/05/29 06:50
首先说以下我的开发工具是:IDEA+mysql 简单的“SSM“框架建设,第一次写的时候到jar包的时候把自己弄得很糊涂,希望此代码可以对你们有帮助。下来贴出的我项目的包位置,![这是Dao,service,controller]
引用块内容
(http://img.blog.csdn.net/20171203203644027?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzY0ODEwNTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(http://img.blog.csdn.net/20171203203822111?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzY0ODEwNTI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
访问URL:localhost:8080/insertUser.do
下来才是真正的干货,首先建一个entity实体User类:
package com.demo.entity;public class UserEntity { //id private Integer id; //名称 private String userName; //密码 private String userPwd; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPwd() { return userPwd; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; } @Override public String toString() { return "UserEntity{" + "id=" + id + ", userName='" + userName + '\'' + ", userPwd='" + userPwd + '\'' + '}'; }}
下来就是Dao了,提个建议:这里的方法名和mapper里要一致,并且最好能统一点,等你的实体多了你可以将其抽成一个基础借口,让其它的去集成就行了,这样可以减轻您的代码体积和代码量。
package com.demo.dao;import com.demo.entity.UserEntity;/** * 用户信息数据层 * */public interface UserDao { //新增用户信息 int insertUser(UserEntity userEntity); //修改用户信息 int updateUser(UserEntity userEntity); //查询用户信息 UserEntity findUser(UserEntity userEntity); //删除用户信息 int deleteUser(Integer id);}接下来就到service接口和serviceImpl类了,实现类里面一定要多判断,不然你在执行Dao时,就会出现很多Exception,这些都是可以避免的。建议多用接口这样你需求有变化时,你的代码改动量时最小的而且不会出现“跷跷板”情况。
package com.demo.service;
import com.demo.entity.UserEntity;
/**
* 用户信息业务逻辑处理层
**/
public interface UserService {
//新增用户信息String insertUser(UserEntity userEntity);//修改用户信息String updateUser(UserEntity userEntity);//查询用户信息UserEntity findUser(UserEntity userEntity);//删除用户信息String deleteUser(Integer id);
}
serviceImpl实现类:我在这个类里面,验证如果出现异常就自己new一个RunTimeException这样的好处是唇线异常信息是不是是服务器停止。而且对于前端也好判断,你可以自己写一个异常类继承Exception。
package com.demo.service.impl;import com.demo.dao.UserDao;import com.demo.entity.UserEntity;import com.demo.service.UserService;import org.springframework.stereotype.Service;import javax.annotation.Resource;/** * 业务逻辑处理实现类 **//*controller依赖注入service接口时,如果项目的service接口多,建议使用别名。这样可以规避掉一些不必要的异常*/@Service("userServices")public class UserServiceImpl implements UserService { @Resource private UserDao userDao; /*新增用户信息*/ public String insertUser(UserEntity userEntity) { //验证参数有效性 if(userEntity==null){ throw new RuntimeException("新增对象不能为空..."); }else if(userEntity.getUserName()==null || userEntity.getUserName().equals("")){ throw new RuntimeException("用户名称不能为空..."); }else if(userEntity.getUserPwd()==null || userEntity.getUserPwd().equals("")){ throw new RuntimeException("用户密码不能为空..."); } //执行新增 int rows = userDao.insertUser(userEntity); //根据记过判断是否新增成功 if(rows==-1){ throw new RuntimeException("新增失败.."); } return "新增成功"; } /*修改用户信息*/ public String updateUser(UserEntity userEntity) { //验证参数有效性 if(userEntity==null){ throw new RuntimeException("新增对象不能为空..."); }else if( userEntity.getId().equals("")||userEntity.getId()==null){ throw new RuntimeException("用户id不能为空..."); }else if(userEntity.getUserName()==null || userEntity.getUserName().equals("")){ throw new RuntimeException("用户名称不能为空..."); }else if(userEntity.getUserPwd()==null || userEntity.getUserPwd().equals("")){ throw new RuntimeException("用户密码不能为空..."); } //执行新增 int rows = userDao.updateUser(userEntity); //根据记过判断是否新增成功 if(rows==-1){ throw new RuntimeException("修改失败.."); } return "修改成功"; } /*查询*/ public UserEntity findUser(UserEntity userEntity) { //执行查询 UserEntity entity = userDao.findUser(userEntity); //根据查询结果判断是否有数据 if(entity==null){ throw new RuntimeException("没有数据对象..."); } return entity; }
最后就是controller和controllerImpl了:
package com.demo.controller;import com.demo.entity.UserEntity;public interface UserController { //新增用户信息 String insertUser(UserEntity userEntity); //修改用户信息 String updateUser(UserEntity userEntity); //查询用户信息 UserEntity findUser(UserEntity userEntity); //删除用户信息 String deleteUser(Integer id);}
controllerImpl实现类:
package com.demo.controller.impl;import com.demo.controller.UserController;import com.demo.entity.UserEntity;import com.demo.service.UserService;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource;@Controller@RequestMapping("/")public class UserControllerimpl implements UserController { @Resource private UserService userService; /*新增用户信息*/ @RequestMapping("insertUser") @ResponseBody public String insertUser(UserEntity userEntity) { //执行新增 String str = userService.insertUser(userEntity); //返回结果对象 return str; } /*修改用户信息*/ @RequestMapping("updateUser") @ResponseBody public String updateUser(UserEntity userEntity) { //执行修改 String str = userService.updateUser(userEntity); //返回结果对象 return str; } /*查询用户信息*/ @RequestMapping("findUser") @ResponseBody public UserEntity findUser(UserEntity userEntity) { //执行新增 UserEntity entity = userService.findUser(userEntity); //返回结果对象 return entity; } @RequestMapping("deleteUser") @ResponseBody public String deleteUser(Integer id) { //执行新增 String str = userService.deleteUser(id); //返回结果对象 return str; }}
下来就是配置文件了:
mapper文件:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.demo.dao.UserDao"><!--新增用户信息--><insert id="insertUser" parameterType="com.demo.entity.UserEntity"> INSERT INTO ( user_name, user_pwd)VALUES( #{userName}, #{userPwd})<!--修改用户信息--><insert id="updatetUser" parameterType="com.demo.entity.UserEntity"> UPDATE user <trim prefix="set" suffixOverrides=","> <if test="userName!=null and !userName.equals('')"> user_name=#{userName}, </if> <if test="userPwd!=null and !userPwd.equals('')"> user_pwd=#{userPwd}, </if></trim> WHERE id=#{id};<!--删除表中信息--> <update id="deleteUser" parameterType="com.demo.entity.UserEntity"> DELETE FROM user WHERE id=#{id} </update><!--查询所有用户信息分页--> <select id="findUser" parameterType="com.demo.entity.UserEntity" resultType="com.demo.entity.UserEntity"> SELECT id,user_name,user_pwd FROM user;</mapper>
mysql数据库链接:
driverClasss=com.mysql.jdbc.DriverjdbcUrl=jdbc:mysql://localhost:3306/"数据库连接名"?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullusername=rootpassword=123456initialSize=0maxActive=20maxIdle=20minIdle=1maxWait=60000
spring-mvc配置文件:
<?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:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 自动扫描 @Controller--> <context:component-scan base-package="com.demo"/> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter"/> <!-- JSON转换器 --> </list> </property> </bean></beans>
spring-mybatis:
<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 自动扫描 --> <context:component-scan base-package="com.demo"/> <!-- 第一种方式:加载一个properties文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> <!-- 第二种方式:加载多个properties文件 <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> <value>classpath:common.properties</value> </list> </property> <property name="fileEncoding" value="UTF-8"/> </bean> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"> <property name="properties" ref="configProperties"/> </bean> --> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driverClasss}"/> <property name="url" value="${jdbcUrl}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}"></property> <!-- 连接池最大数量 --> <property name="maxActive" value="${maxActive}"></property> <!-- 连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property> <!-- 连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="${maxWait}"></property> </bean> <!-- mybatis和spring完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:mapping/*.xml"></property> <property name="configLocation" value="classpath:mybatis-config.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.demo"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <tx:annotation-driven transaction-manager="transactionManager"/></beans>
最后就是web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>demo</display-name> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止spring内存溢出监听器,比如quartz --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- spring mvc servlet--> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此处也可以配置成 *.do 形式 --> <url-pattern>*.do</url-pattern> </servlet-mapping></web-app>
- java+ssm 基础
- ssm框架基础配置
- ssm框架基础配置
- ssm框架基础配置
- ssm框架基础配置
- SSM框架基础配置
- ssm 之 Struts 基础
- SSM--基础构建
- ssm--基础查询
- SSM框架基础配置
- 从零基础认识ssm
- 从零基础认识ssm
- [SSM]java.lang.NullPointerException
- Java ssm整合swagger
- 族谱(java-ssm)
- [SSM]java.lang.NullPointerException
- java,ssm框架实战
- Java-SSM-配置错误
- Database—DML
- Android 内存优化方式
- POJ-2178 Beauty Contest 凸包+旋转卡壳求最远点对
- Google超分辨率论文RAISR实现小结
- CDH 5.x完美卸载
- java+ssm 基础
- 【2017.12.3】4.Median of Two Sorted Arrays(两个排序数组的中值)难
- 随想录(插件的重要思想)
- java线程sleep join yield wait notify notifyAll
- 使用docker制作hexo镜像
- [线段树] 「JOI Open Contest 2017」Bulldozer
- 屏蔽电缆的接地方式
- 《深入浅出MySQL》读书笔记
- [Redis]RedisCluster使用pipeline批量读取数据