🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ?留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
一、员工管理系统项目说明:
该项目主要是完成Spring+SpringMVC+mybatis的完整整合,功能实现比较单一,就是一个完成增删改查的小项目!
源代码在githee仓库:SSM实战项目:人事管理系统(蓝色版)
1、整个项目实现功能
管理员的登录,注册,员工的增删改查,批量删除,整个系统设计的目标人群是管理者,系统的主要功能是对员工进行各种信息的操作。主要是完成对数据库的增删改查的功能。
2、开发环境
分类 | 名称 | 语种 |
---|
操作系统 | windows10 | 简体中文 | 数据库平台 | MySQL Server 8.0+ | | 应用服务器 | apache-tomcat-8.5.71 | | java开发工具 | idea | | 框架 | mybatis+Spring+SpringMVC | | 项目名称 | 《学生教务系统》 | | 实现技术 | mybatis+Spring+SpringMVC+mysql+Servlet+jquery+bootStrap+js+Maven+tomcat等技术 | |
3、数据库表设计
create table t_emp(
id int primary key auto_increment,
name varchar(20) not null,
salary double not null,
age int not null
)
insert into t_emp values(null,'王恒杰',20000,21);
insert into t_emp values(null,'杨福君',9000,19);
select * from t_emp;
create table t_admin(
id int primary key auto_increment,
username varchar(20),
password varchar(50)
)
insert into t_admin values(null,'王恒杰','123456');
select * from t_admin
4、Maven导入项目所依赖的jar包
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<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.1</version>
</dependency>
5、Spring+mybatis整合工厂(applicationContext.xml)
<context:component-scan base-package="com.tjcu.whj"></context:component-scan>
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<bean class="com.alibaba.druid.pool.DruidDataSource" name="dataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:com/tjcu/mapper/*DaoMapper.xml"></property>
<property name="typeAliasesPackage" value="com.tjcu.whj.entity"></property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<property name="basePackage" value="com.tjcu.whj.dao"></property>
</bean>
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
6、Spring+SpringMVC整合工厂(Spring-mvc.xml)
<context:component-scan base-package="com.tjcu.whj"></context:component-scan>
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<mvc:default-servlet-handler/>
二、管理员登录/注册模块功能开发
1、dao层(adminDao.java)
public interface AdminDao {
public Admin login(Admin admin);
public void register(Admin admin);
}
2、Service层
(1)adminService接口层
public interface AdminService {
public Admin login(Admin admin);
public void register(Admin admin);
}
(2)adminServiceImpl实现类
@Service("adminService")
@Transactional
public class AdminServiceImpl implements AdminService {
@Autowired
private AdminDao adminDao;
@Override
public Admin login(Admin admin) {
return adminDao.login(admin);
}
@Override
public void register(Admin admin) {
adminDao.register(admin);
}
}
3、功能测试(adminTest)
public class AdminTest {
@Test
public void login(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
AdminService adminService = (AdminService) context.getBean("adminService");
Admin admin = new Admin(null,null, "王恒杰", "123456",true);
Admin login = adminService.login(admin);
System.out.println(login);
}
@Test
public void register(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
AdminService adminService = (AdminService) context.getBean("adminService");
Admin admin = new Admin(null, "风犬少年","邓正武", "234567",true);
adminService.register(admin);
}
}
4、Controller层
@Controller("adminController")
@RequestMapping("admin")
public class AdminController {
@Autowired
private AdminService adminService;
@RequestMapping("login")
public String login(Admin admin,HttpServletRequest request){
String password = MD5Utils.md5(admin.getPassword());
admin.setPassword(password);
Admin admin1 = adminService.login(admin);
System.out.println(admin1);
if(admin1!=null){
request.getSession().setAttribute("admin",admin1);
return "redirect:/emp/show";
}
return "redirect:/login.jsp";
}
@RequestMapping("register")
public String register(Admin admin){
String password = MD5Utils.md5(admin.getPassword());
admin.setPassword(password);
adminService.register(admin);
return "redirect:/login.jsp";
}
@RequestMapping("destroy")
public String destroy(HttpServletRequest request){
request.getSession().invalidate();
return "redirect:/login.jsp";
}
}
三、员工增删改查功能模块的开发
1、dao层(empDao.java)
public interface EmpDao {
public void insert(Emp emp);
public void deleteById(Integer id);
public List<Emp> showEmp();
public void updateEmp(Emp emp);
public Emp selectEmpById(Integer id);
}
2、Service层
(1)empService接口层
public interface EmpService {
public void insert(Emp emp);
public void deleteById(Integer id);
public List<Emp> showEmp();
public void updateEmp(Emp emp);
public Emp selectEmpById(Integer id);
}
(2)empServiceImpl实现类
@Service("empService")
@Transactional
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpDao empDao;
public void setEmpDao(EmpDao empDao) {
this.empDao = empDao;
}
@Override
public void insert(Emp emp) {
empDao.insert(emp);
}
@Override
public void deleteById(Integer id) {
empDao.deleteById(id);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<Emp> showEmp() {
return empDao.showEmp();
}
@Override
public void updateEmp(Emp emp) {
empDao.updateEmp(emp);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public Emp selectEmpById(Integer id) {
return empDao.selectEmpById(id);
}
}
3、功能测试(EmpTest)
public class EmpTest {
@Test
public void insert(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
EmpService empService = (EmpService) context.getBean("empService");
Emp emp = new Emp(null,"邓正武",2000d,22);
empService.insert(emp);
}
@Test
public void deleteById(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
EmpService empService = (EmpService) context.getBean("empService");
empService.deleteById(4);
}
@Test
public void showEmp(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
EmpService empService = (EmpService) context.getBean("empService");
List<Emp> emps = empService.showEmp();
for (Emp emp : emps) {
System.out.println(emp);
}
}
@Test
public void updateEmp(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
EmpService empService = (EmpService) context.getBean("empService");
Emp emp = new Emp(3,"邓正武",38000d,23);
empService.updateEmp(emp);
}
@Test
public void selectEmpById(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
EmpService empService = (EmpService) context.getBean("empService");
Emp emp = empService.selectEmpById(1);
System.out.println(emp);
}
}
4、Controller层
@Controller("emoController")
@RequestMapping("emp")
public class EmpController {
@Autowired
private EmpService empService;
@RequestMapping("insert")
public String insert(Emp emp){
empService.insert(emp);
return "redirect:/emp/show";
}
@RequestMapping("delete")
public String deleteById(Emp emp){
empService.deleteById(emp.getId());
return "redirect:/emp/show";
}
@RequestMapping("show")
public String showEmp(Model model){
List<Emp> emps = empService.showEmp();
model.addAttribute("emps",emps);
return "emplist";
}
@RequestMapping("update")
public String updateEmp(Emp emp){
empService.updateEmp(emp);
return "redirect:/emp/show";
}
@RequestMapping("select")
public String selectEmpById(Integer id,Model model){
Emp emp = empService.selectEmpById(id);
model.addAttribute("emp",emp);
return "updateEmp";
}
}
源代码在githee仓库:SSM实战项目:人事管理系统(蓝色版)
|