工程结构
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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 1.扫描有注解的包 --> <context:component-scan base-package="com.ssm"></context:component-scan>
<!-- 2.加载properties文件 --> <context:property-placeholder location="classpath:dbinfo.properties"/>
<!-- 3.配置数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 链接数据库必须的四个属性 --> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> </bean>
<!-- 4.配置事务工厂sessionFactory --> <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:SqlMapConfig.xml"></property> <property name="dataSource" ref="dataSource"></property> </bean>
<!-- 5.配置扫描器 扫描mapper包 生成实现类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property> <property name="basePackage" value="com.ssm.mapper"></property> </bean>
</beans> |
dbinfo.properties 数据库配置文件
jdbc.driverClass=com.mysql.jdbc.Driver jdbc.jdbcUrl=jdbc:mysql://localhost:3306/test?unicode=true&characterEncoding=utf-8 jdbc.user=root jdbc.password=0000 |
applicationContext-transaction.xml 事物工厂
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 事务的配置 --> <!-- 1.事务的管理器 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 2.配置事务详情 --> <tx:advice id="myAdvice" transaction-manager="txManager"> <tx:attributes> <!-- propagation="REQUIRED" 事务传递级别 --> <tx:method name="save*" propagation="REQUIRED" read-only="false"/> <tx:method name="insert*" propagation="REQUIRED" read-only="false"/> <tx:method name="update*" propagation="REQUIRED" read-only="false"/> <tx:method name="delete*" propagation="REQUIRED" read-only="false"/> <tx:method name="find*" propagation="NOT_SUPPORTED" read-only="true"/> <tx:method name="select*" propagation="NOT_SUPPORTED" read-only="true"/> <tx:method name="search*" propagation="NOT_SUPPORTED" read-only="true"/> </tx:attributes> </tx:advice> <!-- 3.配置aop 把事务织入到目标方法中 --> <aop:config> <aop:advisor advice-ref="myAdvice" pointcut="execution(* com.ssm.service.impl.*.*(..))"/> </aop:config> </beans> |
log4j.properties 日志配置文件
log4j.rootLogger = DEBUG,C,F #\u8F93\u51FA\u5230\u63A7\u5236\u53F0 log4j.appender.C=org.apache.log4j.ConsoleAppender log4j.appender.C.Target = System.out log4j.appender.C.layout = org.apache.log4j.PatternLayout log4j.appender.C.layout.ConversionPattern =%-d{ yyyy-MM-dd HH:mm:ss}-[%p %F:%L] %m%n #\u8F93\u51FA\u5230\u6587\u4EF6 log4j.appender.F = org.apache.log4j.DailyRollingFileAppender log4j.appender.F.File =G\:javaprojlogmyproj.log log4j.appender.F.Append = true log4j.appender.F.Threshold = DEBUG log4j.appender.F.layout=org.apache.log4j.PatternLayout log4j.appender.F.layout.ConversionPattern=%-d{ yyyy-MM-dd HH\:mm\:ss}-[%p %F\:%L] %m%n |
springmvc.xml 配置文件
<?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:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 扫描注解 --> <context:component-scan base-package="com.ssm"></context:component-scan> <!-- 映射器 适配器 --> <mvc:annotation-driven></mvc:annotation-driven>
<!-- 静态资源能够访问 --> <mvc:resources location="/static/" mapping="/static/**"></mvc:resources>
<!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="suffix" value=".jsp"></property> <property name="prefix" value="/WEB-INF/jsp/"></property> </bean>
</beans> |
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!-- 配置相关信息--> <configuration>
</configuration> |
————————————————————————————————————————————————————————
UserMapper 接口
package com.ssm.mapper; import java.util.List; import com.ssm.pojo.User; public interface UserMapper { public List<User> findAll(); public void save(User user); public void update(User user); public void delete(int user); } |
UserMapper.xml 映射文件
<?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" > <!-- namespace 要和接口一致 --> <mapper namespace="com.ssm.mapper.UserMapper"> <select id="findAll" resultType="com.ssm.pojo.User"> select * from test </select> <insert id="save" parameterType="com.ssm.pojo.User"> insert into test(password,name) value(#{name},#{password}) </insert> <update id="update" parameterType="com.ssm.pojo.User"> update test set password = #{password},name=#{name} where id=#{id} </update>
<delete id="delete" parameterType="int"> delete from test where id=#{id} </delete>
</mapper> |
User 实体类
package com.ssm.pojo; public class User { private int id; private String name; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "user [id=" + id + ", name=" + name + ", password=" + password + "]"; }
} |
UserServce 接口
package com.ssm.service; import java.util.List; import com.ssm.pojo.User; public interface UserServce { public List<User> findAll();
public void save(User user); public void update(User user); public void delete(int user); } |
UserServiceImpl
package com.ssm.serviceimpl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.ssm.mapper.UserMapper; import com.ssm.pojo.User; import com.ssm.service.UserServce; @Service public class UserServiceImpl implements UserServce { //注入mapper @Resource private UserMapper usermapper;
@Override public List<User> findAll() { // TODO Auto-generated method stub return usermapper.findAll(); } @Override public void save(User user) { // TODO Auto-generated method stub usermapper.save(user); } @Override public void update(User user) { // TODO Auto-generated method stub usermapper.update(user); } @Override public void delete(int user) { // TODO Auto-generated method stub usermapper.delete(user); } |
UserController
package com.ssm.controller; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.ssm.pojo.User; import com.ssm.service.UserServce; @Controller public class UserController { //注入service @Resource public UserServce userservce;
@RequestMapping("/show") public String show(HttpServletRequest request){ List<User> user=userservce.findAll(); request.setAttribute("ulist", user); return "show"; } } |
Jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>">
<title>show</title>
<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head>
<body> <span>所有用戶</span> <!-- 遍歷所有集合 --> <table border="1px" align="center"> <tr> <td align="center">用戶id </td> <td align="center">用戶名</td> <td align="center">用戶密碼</td> <td align="center">修改</td> </tr> <c:forEach items="${ulist }" var="u"> <tr> <td align="center">${u.id }</td> <td align="center">${u.name}</td> <td align="center">${u.password }</td> <td> <!-- confirm:确定按钮 取消按钮 location.href=url 跳转到url --> <a href="javascript:if(confirm('是否修改?')) location.href='${pageContext.request.contextPath }/toUp/${u.id }'">修改</a> <a id="del" href="${u.id}" >删除</a> </td> </tr> </c:forEach> </table> </body> </html> |