IDEA搭建
SpringBoot+Mybatis+Maven Web
项目开发环境
Demo演示功能:
查询Oracle数据库dept表信息,并将信息展示在页面上。
1、创建项目
打开IDEA,点击File---->New---->Project,如图:
选择Spring Initializr,选择好JDK,点击Next,如图:
填写Group,Artifact,Type,Packaging后,点击Next,如图:
选择好Web,点击SQL,如图:
选择MySQL(这里可以不选择MySQL,我们Demo中使用的是Oracle数据库),JDBC,MyBatis,点击Next,如图:
填写Project name,点击Finish,如图:
2、dept表
Oracle数据库dept表信息如下:
3、实体层
建立数据库表dept与Dept实体类映射,建立数据库字段与实体类属性对应关系,数据库字段与实体类属性名称可以不相同。
为能够通过注解方式自动将实体对象注入到Spring容器中和后期代码维护,实体类一般需要创建无参、有参构造方法,为每一个属性创建getter和setter方法,建立equals、hashCode、toString方法。当然,在实际开发中,我们只需要写好实体类的属性即可,其余部分IDEA会帮我们自动创建。
(1)Dept类
代码:
package com.leboop.entity;
/**
* Dept实体类
*/
public class Dept {
/**
*部门号
*/
private Integer deptno;
/**
*部门名称
*/
private String dname;
/**
*部门地址
*/
private String loc;
/**
*无参构造方法
*/
public Dept() {
}
/**
*含参构造
*@paramdeptno部门号
*@paramdname部门名称
*@paramloc部门地址
*/
public Dept(Integer deptno, String dname, String loc) {
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
/*
getter和setter方法开始
*/
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
/*
getter和setter方法结束
*/
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Dept dept = (Dept) o;
if (deptno != null ? !deptno.equals(dept.deptno) : dept.deptno != null)
return false;
if (dname != null ? !dname.equals(dept.dname) : dept.dname != null)
return false;
return loc != null ? loc.equals(dept.loc) : dept.loc == null;
}
@Override
public int hashCode() {
int result = deptno != null ? deptno.hashCode() : 0;
result = 31 * result + (dname != null ? dname.hashCode() : 0);
result = 31 * result + (loc != null ? loc.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "Dept{" +
"deptno=" + deptno +
", dname='" + dname + '\'' +
", loc='" + loc + '\'' +
'}';
}
}
4、映射层
(1)DeptMapper.xml配置
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SELECT * FROM dept WHERE deptno=#
5、持久层
(1)DeptDao接口代码
package com.leboop.dao;
import com.leboop.entity.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
/**
* DeptDao接口
*数据库持久层:数据增删改查
*/
@Mapper
@Component("deptDao")
public interface DeptDao {
Dept findById(int id);
}
6、服务层
(1)DeptService接口代码
package com.leboop.service;
import com.leboop.entity.Dept;
/**
* DeptService接口
*/
public interface DeptService {
/**
*根据id查询部门信息
*@paramid部门id
*@return员工对象
*/
Dept findById(int id);
}
(2)DeptServiceImpl实现类代码
package com.leboop.service;
import com.leboop.dao.DeptDao;
import com.leboop.entity.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* DeptService接口实现类
* Dept相关业务逻辑和数据处理
*/
@Service("deptService")
public class DeptServiceImpl implements DeptService {
/**
*自动注入Spring容器
*/
@Autowired
private DeptDao dao;
/**
*重写接口方法
*根据部门id,查询部门信息
*@paramid部门id
*@return部门信息
*/
@Override
public Dept findById(int id) {
Dept dept = dao.findById(id);
return dept;
}
}
7、控制层
(1)DeptController代码
package com.leboop.controller;
import com.leboop.entity.Dept;
import com.leboop.service.DeptService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* Dept控制器
*处理前端请求
*/
@RestController
@RequestMapping("/dept")
public class DeptController {
/**
*自动注入Spring容器
*/
@Resource
private DeptService service;
@RequestMapping("find")
public Dept findDept(int id){
Dept dept = service.findById(id);
return dept;
}
}
8、SpringBoot配置
(1)application.properties
#数据源配置
spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
spring.datasource.driver=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@192.168.189.132:1521:orcl
spring.datasource.username=scott
spring.datasource.password=tiger
# mybatis配置
mybatis.type-aliases-package=com.leboop.entity
mybatis.mapper-locations=classpath:mapper/*.xml
9、主页
(1)index.html代码
主页
查询部门信息
请选择查询的部门号:
this)">
请选择
10
20
30
40
50
(2)findDept.js代码
functionfind(sel){
//获取下拉框的值
varvalue=sel.options[sel.selectedIndex].value;
if(value!=-1){//如果已选择部门号
$.ajax(
{
type:'post',
url:'./dept/find',
data:{
id:value
},
success:function(result) {
if(result!=null&&result!=""){
$("#info").html("
部门号:"+result.deptno+"
");
$("#info").append("
部门名称:"+result.dname+"
");
$("#info").append("
部门地址:"+result.loc+"
");
}else{
$("#info").html("
未查询到结果
")
}
},
error:function() {
$("#info").html("
查询error
")
}
}
);
}else{//下拉框值为“请选择”
$("#info").html();
}
}
10、打包部署
将项目打成war包,需要ServletInitializer类,如下:
(1)ServletInitializer
package com.leboop;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
}
(2)springbootdemo.war包
如图:
(3)上传
将war包上传至服务器192.168.189.111的tomcat的webapps目录下,如图:
(4)Windows本地访问
在浏览器输入http://192.168.189.111:8080/springbootdemo/,如图:
选择部门号10后,如图:
再选择部门号50,如图:
领取专属 10元无门槛券
私享最新 技术干货