博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Mybatis】使用SSM框架完成jsTree
阅读量:2057 次
发布时间:2019-04-28

本文共 8951 字,大约阅读时间需要 29 分钟。

首先进行SSM框架的配置

导入SSM相应的jar包,然后对项目进行分包

书写javaBean并在数据库中建立数据库表,插入测试数据

Dept类

package cn.qblank.entity;public class Dept {	private Long id;	private String deptName;	private String deptSubject;	private Long deptManager_id;		public Long getId() {		return id;	}	public void setId(Long id) {		this.id = id;	}	public String getDeptName() {		return deptName;	}	public void setDeptName(String deptName) {		this.deptName = deptName;	}	public String getDeptSubject() {		return deptSubject;	}	public void setDeptSubject(String deptSubject) {		this.deptSubject = deptSubject;	}	public Long getDeptManager_id() {		return deptManager_id;	}	public void setDeptManager_id(Long deptManager_id) {		this.deptManager_id = deptManager_id;	}	@Override	public String toString() {		return "Dept [id=" + id + ", deptName=" + deptName + ", deptSubject=" + deptSubject + ", deptManager_id="				+ deptManager_id + "]";	}}

数据库中表的数据结构和数据如下:

准备数据库连接的连接配置jdbc.properties

jdbc.user=root

jdbc.password=root
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql:///ssm

定义配置类AppConfig进行Spring-Mybatis以及Spring-SpringMVC的配置:

package cn.qblank.config;import javax.sql.DataSource;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.core.env.Environment;import org.springframework.core.io.ClassPathResource;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.jdbc.datasource.DriverManagerDataSource;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.InternalResourceViewResolver;import org.springframework.web.servlet.view.JstlView;@Configuration  //配置注解@ComponentScan("cn.qblank")  //扫描整个项目包@EnableTransactionManagement //开启事务管理@PropertySource("classpath:/jdbc.properties") //加载数据源@MapperScan("cn.qblank.dao.mapper")  //扫描mapper下的类和xml@EnableWebMvc  //开启静态资扫描public class AppConfig extends WebMvcConfigurerAdapter{	//********Spring-mybatis的配置********	/**	 * 创建SqlSession工厂bean	 * @param dataSource	 */	@Bean	public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();		sqlSessionFactoryBean.setDataSource(dataSource);		sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));		return sqlSessionFactoryBean;	}	/**	 * 依赖Environment获取数据源	 * @return DriverManagerDataSource	 */	@Bean	public DataSource dataSource(Environment env){		DriverManagerDataSource dsManager = new DriverManagerDataSource();		dsManager.setDriverClassName(env.getProperty("jdbc.driverClass"));		dsManager.setUrl(env.getProperty("jdbc.jdbcUrl"));		dsManager.setUsername(env.getProperty("jdbc.user"));		dsManager.setPassword(env.getProperty("jdbc.password"));		return dsManager;	}	/**	 * 事务管理	 * @param dataSource	 * @return	 */	@Bean	public PlatformTransactionManager platformTransactionManager(DataSource dataSource){		//创建事务管理类		DataSourceTransactionManager dst = new DataSourceTransactionManager();		dst.setDataSource(dataSource);		return dst;	}		//**********Spring-SpringMVC的配置**********	//负责将控制器方法返回的字符串映射到某个JSP	@Bean	public ViewResolver viewResolver(){		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();		//使其支持jsp及标准taglib		viewResolver.setViewClass(JstlView.class);		viewResolver.setPrefix("/WEB-INF/jsp/");		viewResolver.setSuffix(".jsp");		return viewResolver;	}		//映射路径	@Override	public void addResourceHandlers(ResourceHandlerRegistry registry) {		registry.addResourceHandler("/assets/**").addResourceLocations("/public/");	}	}

在mybatis-config.xml中设置类的别名

定义dao的接口DeptMapper

package cn.qblank.dao.mapper;import java.util.List;import cn.qblank.entity.Dept;public interface DeptMapper {	/**	 * 查询所有员工	 */	List
findAllDept();}
使用DeptMapper.xml来实现接口

定义Service层接口,并在其实现类中调用dao层方法

package cn.qblank.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import cn.qblank.dao.mapper.DeptMapper;import cn.qblank.entity.Dept;import cn.qblank.service.IDeptService;@Servicepublic class DeptServiceImpl implements IDeptService{	@Autowired	private DeptMapper deptMapper;		@Override	public List
findAllDept() { return deptMapper.findAllDept(); } }
在web.xml中配置Springmvc的入口

dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextClass
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
contextConfigLocation
cn.qblank.config.AppConfig
dispatcherServlet
/

引入jsTree的主题样式以及js文件dist,该文件可以在官网进行下载 https://www.jstree.com/,将该文件放入public文件夹里面,并通过配置类AppConfig配置映射路径,配置如上面的AppConfig类

在WEB-INF下的/jsp文件夹下建立jsp静态资源test.jsp,在jsp中引入主题样式,jquery还有jsTree的js文件(注意,jquery文件要先引入,因为jsTree的js是基于jquery来开发的),然后在后面引入自身写的js文件getData.js

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
jsTree树‘

jstree树‹

通过getData.js想后台通过ajax进行异步请求json数据

//准备数据格式/*var deptData = [	{id: 1, text: '市场部', parent: '#'},	{id: 2, text: '开发部', parent: '#'},	{id: 3, text: '行政人事部', parent: '#', icon: 'fa fa-address-book'},	{id: 4, text: '咨询中心', parent: '1'},	{id: 5, text: 'Java部', parent: '2'},	{id: 6, text: 'IOS部', parent: '2'}];*///使用ajax获取数据  .表示当前路径$.ajax(".",{	method:"GET",	dataType:"json",	//数据类型}).done(function(data){		//获取数据data,json转换为js数组	//加载数据	$('#jstree_demo_div').jstree({		core: {			data:{				url: '.'			}		}	});});

定义Controller层,接收到请求,从后台获取数据,并将数据以json的格式发送出去,由上面需要的格式来看,我们只需要获取三个数据

1.id :树的编号

2.text: 树的内容

3.parent: 树的父节点(注意:第一个树必须为'#')

而后台却会传过来很多数据,于是我们可以用一个对象Page封装需要的数据

package cn.qblank.controller;public class Page {	private Long id;	private String text;	private String parent;		public Long getId() {		return id;	}	public void setId(Long id) {		this.id = id;	}	public String getText() {		return text;	}	public void setText(String text) {		this.text = text;	}	public String getParent() {		return parent;	}	public void setParent(String parent) {		this.parent = parent;	}		}
然后我们在Controller先获取数据,然后将数据封装,然后将封装的用json的格式发送出去

package cn.qblank.controller;import java.util.ArrayList;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.MediaType;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import cn.qblank.entity.Dept;import cn.qblank.entity.Employee;import cn.qblank.service.IDeptService;import cn.qblank.service.IEmployeeService;@Controller  //专用于控制层public class EmployeeController {		@Autowired	private IDeptService deptService;			@RequestMapping(value = "/depts",			produces = MediaType.APPLICATION_JSON_VALUE)	@ResponseBody  //将响应的格式转换为json格式	public List
getDepts(){ List
depts = deptService.findAllDept(); System.out.println(depts); List
pages = new ArrayList<>(); //获取所得数据,并进行处理 for (Dept dept : depts) { Page page = new Page(); page.setId(dept.getId()); page.setText(dept.getDeptName()); page.setParent(dept.getDeptManager_id().toString()); pages.add(page); } pages.get(0).setParent("#"); //将第一层树的parent结点初始化为'#' pages.get(1).setParent("#"); return pages; } //跳转测试页面test.jsp @RequestMapping(value = "/depts/detail") public String getPage(){ return "test"; }}
加载页面的结果如下:

 由于本人第一次配置SSM项目,导致配置了很久才将SSM配置好,其中也找出了一些常见错误以及习惯,在以下列出来:

1.不要忘记打注解,这是Spring的依赖,不打注解时可能会包空指针异常

2.在web项目是,加载jdbc.properties的时候需要加上classpath:/jdbc.propertis

3.在加载数据源配置时:

1)在这里配置连接配置时需要借助Environment类进行配置

2)这里不要像配置SSH时习惯性地加上${},如果加上了,这时会报DriverClassName must not's be empty这样的错误。

4.注意包的导入,在这么多包中肯定会有包与java本身包有冲突,所以注意这一点

5.注意不要一次性编码,每配置好一步,注意进行单元测试,例如配置好Spring-mybatis时,不要急于去配置SpringMVC,先测试Spring+mybatis是否能成功运行,保证不会带着错误进行下一步。

6.保持细心,不要打错类名,实在不行就进行拷贝,防止错误。

以上就是我的一些小小的错误总结,希望能给你们带来帮助。

你可能感兴趣的文章
云原生 第十一章 应用健康
查看>>
Leetcode C++ 《第202场周赛》
查看>>
云原生 第十二章 可观测性:监控与日志
查看>>
Leetcode C++ 《第203场周赛》
查看>>
云原生 第十三章 Kubernetes网络概念及策略控制
查看>>
《redis设计与实现》 第一部分:数据结构与对象 || 读书笔记
查看>>
《redis设计与实现》 第二部分(第9-11章):单机数据库的实现
查看>>
算法工程师 面经2019年5月
查看>>
搜索架构师 一面面经2019年6月
查看>>
稻草人手记
查看>>
第一次kaggle比赛 回顾篇
查看>>
leetcode 50. Pow(x, n)
查看>>
leetcode 130. Surrounded Regions
查看>>
【托业】【全真题库】TEST2-语法题
查看>>
博客文格式优化
查看>>
【托业】【新托业全真模拟】疑难语法题知识点总结(01~05)
查看>>
【SQL】group by 和order by 的区别。
查看>>
【F12】谷歌浏览器--前台效果可以在不访问服务器的前提下直接改样式看效果是否是预期值。...
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>