当前位置:网站首页>SSM framework integration -- > simple background management
SSM framework integration -- > simple background management
2022-06-13 06:22:00 【¥ - congratulations on getting rich-¥】
List of articles
One 、 Database and entity class creation
database :
Entity class :
Role
public class Role {
private Long id;
private String roleName;
private String roleDesc;
get/set/toString;
}
User
public class User {
private Long id;
private String username;
private String email;
private String password;
private String phoneNum;
// What roles does the current user have
private List<Role> roles;
get/set/toString;
}
Two 、 The configuration file
1.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring-test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- Database driven -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!-- springMVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>
2.applicationContext.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.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
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
">
<!--1、 data source -->
<!-- External load jdbc file -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 2、 To configure jdbc Template object -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 3. To configure SqlSessionFactory object -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- Inject the database connection pool -->
<property name="dataSource" ref="dataSource"/>
<!-- To configure MyBaties Global profile :mybatis-config.xml -->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
</bean>
3.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>
<!-- adopt properties Tag load external properties file -->
<properties resource="jdbc.properties"></properties>
<!-- Custom alias -->
<typeAliases>
<typeAlias type="com.domain.User" alias="user"></typeAlias>
<typeAlias type="com.domain.Role" alias="role"></typeAlias>
</typeAliases>
<!-- Load mapping relationship -->
<mappers>
<!-- Specify the package where the interface is located -->
<package name="com.dao"></package>
</mappers>
</configuration>
4.spring-mvc.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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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
">
<!--1、mvc Annotation driven -->
<mvc:annotation-driven/>
<!--2、 Configure the internal resource view parser -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- /jsp/success.jsp -->
<property name="prefix" value="/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--3、 Static resource permissions are open -->
<!-- <mvc:resources mapping="/js/**" location="/js/"/>-->
<!-- Tomcat Look for static resources -->
<mvc:default-servlet-handler/>
<!--4、 Component scan : scanning Controller-->
<context:component-scan base-package="com.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
</beans>
5.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- Global initialization parameters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--Spring Monitor -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- SpringMVC Front end controller for -->
<servlet>
<servlet-name>DispatcherServlet</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>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- Filters to resolve garbled code -->
<filter>
<filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern> </filter-mapping> </web-app>
3、 ... and 、 Function realization
1. Role add / delete query
Control layer Controller:
@RequestMapping("/role")
@Controller // representative RoleController In annotation mode , But need to be in springMVC Configure component scanning in the configuration file
public class RoleController {
@Autowired
private RoleService roleService;
// Role search
@RequestMapping("/list")
public ModelAndView list() {
ModelAndView modelAndView = new ModelAndView();
List<Role> roleList = roleService.list();
// Set model objects
modelAndView.addObject("roleList", roleList);
// Set up the view
modelAndView.setViewName("role-list");
return modelAndView;
}
//
@RequestMapping("/save")
public String save(Role role) {
roleService.save(role);
return "redirect:/role/list";
}
@RequestMapping("/del/{roleId}")
public String del(@PathVariable("roleId") Long roleId) {
roleService.del(roleId);
return "redirect:/role/list";
}
}
Business logic layer Service
service Interface :
public interface RoleService {
public List<Role> list();
void save(Role role);
void del(Long roleId);
}
Interface implementation class :
public class RoleServiceImpl implements RoleService {
@Autowired
private RoleDao roleDao;
@Override
public List<Role> list() {
List<Role> roleList = roleDao.findAll();
return roleList;
}
@Override
public void save(Role role) {
roleDao.save(role);
}
@Override
public void del(Long roleId) {
roleDao.delRoleRel(roleId);
roleDao.del(roleId);
}
}
Persistence layer Dao
public interface RoleDao {
@Select("select * from sys_role")
@Results({
@Result(column = "id", property = "id"),
@Result(column = "roleName", property = "roleName"),
@Result(column = "roleDesc", property = "roleDesc"),
})
List<Role> findAll();
@Insert("insert into sys_role values(#{id},#{roleName},#{roleDesc})")
void save(Role role);
@Select("select * from sys_user_role ur,sys_role r where ur.roleId=r.id and ur.userId=#{id}")
List<Role> findRoleByUserId(@Param("id") Long id);
@Delete("delete from sys_user_role where roleId=#{roleId}")
void delRoleRel(@Param("roleId") Long roleId);
@Delete("delete from sys_role where id=#{roleId}")
void del(@Param("roleId") Long roleId);
}
Effect display :
2. User add / delete query
Control layer Controller:
@RequestMapping("/user")
@Controller
public class UserController {
@Autowired
private UserService userService;
@Autowired
private RoleService roleService;
@RequestMapping("/list")
public ModelAndView list() {
ModelAndView modelAndView = new ModelAndView();
List<User> userList = userService.list();
// Set model objects
modelAndView.addObject("userList", userList);
// Set up the view
modelAndView.setViewName("user-list");
return modelAndView;
}
@RequestMapping("/saveUI")
public ModelAndView saveUI() {
ModelAndView modelAndView = new ModelAndView();
List<Role> roleList = roleService.list();
modelAndView.addObject("roleList", roleList);
modelAndView.setViewName("user-add");
return modelAndView;
}
@RequestMapping("/save")
public String save(User user, Long[] roleIds) throws Exception {
userService.save(user, roleIds);
return "redirect:/user/list";
}
@RequestMapping("/del/{userId}")
public String del(@PathVariable("userId") Long userId) {
userService.del(userId);
return "redirect:/user/list";
}
}
Business logic layer Service
service Interface :
public interface UserService {
public List<User> list();
void save(User user, Long[] roleIds);
void del(Long userId);
}
Interface implementation class :
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Autowired
private RoleDao roleDao;
@Override
public List<User> list() {
List<User> userList = userDao.findAll();
// encapsulation userList Each of them User Of roles data
for (User user : userList) {
// get user Of id
Long id = user.getId();
// take id As a parameter Query the current userId Corresponding Role Aggregate data
List<Role> roles = roleDao.findRoleByUserId(id);
user.setRoles(roles);
}
return userList;
}
@Override
//@Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED)
public void save(User user, Long[] roleIds) {
// First step towards sys_user Storing data in a table
userDao.save(user);
// The second step towards sys_user_role Storing multiple pieces of data in a relational table
for (Long roleId : roleIds) {
userDao.saveUserRoleRel(user.getId(), roleId);
}
}
@Override
public void del(Long userId) {
//1、 Delete the intermediate relation table
userDao.delUserRoleRel(userId);
//2、 Delete User
userDao.del(userId);
}
}
Persistence layer Dao
public interface UserDao {
@Select("SELECT * FROM sys_user")
@Results({
@Result(id = true, column = "id", property = "id"),
@Result(column = "username", property = "username"),
@Result(column = "email", property = "email"),
@Result(column = "phoneNum", property = "phoneNum"),
@Result(
property = "roleList",
column = "id",
javaType = List.class,
many = @Many(select = "com.dao.RoleDao")
)
})
List<User> findAll();
@Insert("insert into sys_user values(#{id},#{username},#{email},#{password},#{phoneNum})")
@Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id")
Long save(User user);
@Insert("insert into sys_user_role values(#{userId},#{roleIds})")
void saveUserRoleRel(@Param("userId") Long userId, @Param("roleId") Long roleId);
@Delete("delete from sys_user_role where userId=#{userId}")
void delUserRoleRel(@Param("userId") Long userId);
@Delete("delete from sys_user where id=#{userId}")
void del(@Param("userId") Long userId);
Effect display :
边栏推荐
- Waterfall flow layout of uni app Homepage
- SSM框架整合--->简单后台管理
- Using the shutter floor database framework
- IOError(Errors.E050.format(name=name))
- [JS] array flattening
- JVM基础
- Applet export (use) public function, public data
- Huawei developer certification and deveco studio compiler Download
- 智能数字资产管理助力企业决胜后疫情时代
- Wechat applet: click the event to obtain the current device information (basic)
猜你喜欢
随机推荐
Alibaba cloud OSS file download cannot be resumed at a breakpoint
Dynamic link library nesting example
Time complexity and space complexity
Solutions to common problems in small program development
【新手上路常见问答】一步一步理解程序设计
【2022高考季】作为一个过来人想说的话
Multiple reception occurs in the uniapp message delivery
Echart line chart: when multiple lines have the same name, the legend is still displayed
Logcat -b events and eventlogtags print the location correspondence of the events log in the code
ADB shell content command debug database
不在以下合法域名列表中,微信小程序解决办法
Uniapp secondary encapsulates uview components, and the parent component controls display and hiding
pthon 执行 pip 指令报错 You should consider upgrading via ...
USB debugging assistant (20191028)
微信小程序:全局状态变量的使用
Download and installation of universal player potplayer, live stream m3u8 import
Basic knowledge of knowledge map
RFID process management solution for electroplating fixture
You should consider upgrading via
Fichier local second Search Tool everything