SSM框架练习

mac2025-12-27  8

SSM框架

在数据库中建立一张名为t_user的表,表中包含的字段如下表所示。 其中user_id是使用了序列。

model层

package lmz.ssmtest.model; public class User { private int userId; private String userName; private int userAge; public User() { super(); } public User(int userId, String userName) { super(); this.userId = userId; this.userName = userName; } public User(int userId, String userName, int userAge) { super(); this.userId = userId; this.userName = userName; this.userAge = userAge; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getUserAge() { return userAge; } public void setUserAge(int userAge) { this.userAge = userAge; } @Override public String toString() { return "User [userId=" + userId + ", userName=" + userName + ", userAge=" + userAge + "]"; } }

mapper层 UserMapper接口:

package lmz.ssmtest.mapper; import lmz.ssmtest.model.User; public interface UserMapper { // 删除操作是对id进行删除 boolean delete(int id); // 更新操作时,可以对实体类中的所有对象进行更新 boolean update(User user); void add(User user); // 通过id进行查询 User findById(int id); }

UserMapper接口的实现类:

<?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"> <!-- 配置映射器。oracle --> <mapper namespace="lmz.ssmtest.mapper.UserMapper"> <delete id="delete" parameterType="int"> delete from t_user where user_id=#{userId} </delete> <insert id="add" parameterType="User"> insert into t_user( user_id,user_name,user_age) values(SEQ_USER_ID.nextval,#{userName},#{userAge}) </insert> <update id="update" parameterType="User"> update t_user set user_name=#{userName},user_age=#{userAge} where user_id=#{userId} </update> <select id="findById" parameterType="int" resultType="User"> select user_id userId,user_name userName,user_age userAge from t_user where user_id=#{userId} </select> </mapper>

service层 service接口

package lmz.ssmtest.service; import lmz.ssmtest.model.User; public interface UserService { boolean delete(int id); boolean update(User user); void add(User user); User findById(int id); }

service接口的实现类

package lmz.ssmtest.service.impl; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import lmz.ssmtest.mapper.UserMapper; import lmz.ssmtest.model.User; import lmz.ssmtest.service.UserService; @Service @Transactional public class UserServiceImpl implements UserService{ @Resource private UserMapper mapper; @Override public boolean delete(int id) { return mapper.delete(id); } @Override public boolean update(User user) { return mapper.update(user); } @Override public void add(User user) { mapper.add(user); } @Override public User findById(int id) { return mapper.findById(id); } }

修改mybatis-config.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> <typeAliases> <typeAlias alias="User" type="lmz.ssmtest.model.User" /> </typeAliases> <!-- 实体接口映射资源。本例使用的是oracle --> <mappers> <mapper resource="lmz/ssmtest/mapper/UserMapper.xml"/> </mappers> </configuration>

修改spring-com.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:p="http://www.springframework.org/schema/p" 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-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/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- 基于xml配置文件配置bean --> <!-- 定义一个数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521/orcl" /> <property name="username" value="springdemo" /> <property name="password" value="123456" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:config/mybatis-config.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="lmz.ssmtest.mapper"></property> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> <!-- 配置事务管理器 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 使用声明式事务 --> <tx:annotation-driven transaction-manager="txManager" /> </beans>

web.xml全局配置文件

<?xml version="1.0" encoding="UTF-8"?> <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"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/spring-*.xml</param-value> </context-param> <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*:config/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- spring环境加载监听器,用于加载spring配置文件及初始化spring运行环境 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 自省清理监听器,用于清理spring运行时可能产生的内存泄漏 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 登陆访问控制过滤器 --> <filter> <display-name>LoginFilter</display-name> <filter-name>LoginFilter</filter-name> <filter-class>com.neuedu.web.filter.LoginFilter</filter-class> </filter> <!-- 过虑所有需要控制的页面的访问,使这些页面只能通过controller进行访问 --> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/jsp/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

测试

package ftest; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import lmz.ssmtest.mapper.UserMapper; import lmz.ssmtest.model.User; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("/config/spring-com.xml") public class UserTest { @Autowired private UserMapper mapper; @Test public void testAdd() { User user = new User(1, "admin", 20); mapper.add(user); } @Test public void testUpdate() { User user = new User(1, "nmnm", 22); mapper.update(user); } }
最新回复(0)