JavaSpring+mybatis+Lombok,实现java架构[保姆教程]
1.环境与依赖配置
jdk目前稳定版本就是1.8,或者17
如果你是想选springboot3以上版本,那你就要用jdk17以上的版本
#ä¸é¢è¿äºå
容æ¯ä¸ºäºè®©MyBatisæ å°
#æå®MybatisçMapperæä»¶
mybatis.mapper-locations=classpath:mappers/*xml
#æå®Mybatisçå®ä½ç®å½
mybatis.type-aliases-package=com.itheima.derm05.mybatis.entity //mybatis的东西
# åºç¨æå¡ WEB 访é®ç«¯å£
server.port=8020 //端口spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dormbd?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456 // 连接接口,比jdbc舒服多了// 注意这个之后要考,蛇形命名法映射驼峰命名法mybatis.configuration.map-underscore-to-camel-case=true spring.web.cors.allowed-origins=*
spring.web.cors.allowed-methods=GET,POST,PUT,DELETE,OPTIONS
spring.web.cors.allowed-headers=*
spring.web.cors.allowed-exposed-headers=*
spring.web.cors.allowed-credentials=true //解决跨域spring.web.resources.static-locations=file:D:/uploads/ //这个是静态资源
2.基本的架构模式
3.pojo
package com.itheima.derm05.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@AllArgsConstructor
@Data
@NoArgsConstructor
public class User {private Integer id; //根据阿里巴巴代码规范,java里面类要用驼峰命名法private String username;private String password;private String name;private String phone;private String role;private String email;private String openId;}
注意:数据库要用蛇形命名法
4.业务层
业务层主要就是放处理业务逻辑的接口的代码
package com.itheima.derm05.service.impl;import com.itheima.derm05.pojo.Bed;
import com.itheima.derm05.mapper.BedMapper;
import com.itheima.derm05.service.BedService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;@Service
public class BedServiceImpl implements BedService {@Resourceprivate BedMapper bedMapper;@Overridepublic void insert(Bed bed) {bedMapper.insert(bed);}@Overridepublic void delete(Integer id) {bedMapper.delete(id);}@Overridepublic void update(Bed bed) {bedMapper.update(bed);}@Overridepublic Bed selectById(Integer id) {return bedMapper.selectById(id);}@Overridepublic List<Bed> selectAll() {return bedMapper.selectAll();}}
package com.itheima.derm05.service;import com.itheima.derm05.pojo.Bed;
import org.springframework.stereotype.Service;import java.util.List;@Service
public interface BedService {void insert(Bed bed);void delete(Integer id);void update(Bed bed);Bed selectById(Integer id);List<Bed> selectAll();
}
普通的增删查改
5.响应层
package com.itheima.derm05.controller;import com.itheima.derm05.pojo.Bed;
import com.itheima.derm05.service.BedService;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;@RestController
@RequestMapping("/bed")
public class BedController {@Resourceprivate BedService bedService;@RequestMapping(path = "/insert",method = RequestMethod.POST)public String insert(@RequestBody Bed bed){bedService.insert(bed);return "success";}@RequestMapping(path = "/delete",method = RequestMethod.POST)public String delete(@RequestBody Map<String, Object> requestBody){Integer id = (Integer) requestBody.get("id");bedService.delete(id);return "success";}@RequestMapping(path = "/update",method = RequestMethod.POST)public String update(@RequestBody Bed bed){bedService.update(bed);return "success";}@RequestMapping(path = "/selectById",method = RequestMethod.POST)public Bed selectById(@RequestBody Map<String, Object> requestBody){Integer id = (Integer) requestBody.get("id");return bedService.selectById(id);}@RequestMapping(path = "/selectAll",method = RequestMethod.POST)public List<Bed> selectAll(){return bedService.selectAll();}
}
这边
@RequestBody Bed bed 是请求体里面内容是对象@RequestBody Map<String, Object 这个就是基本数据类型或者String用这个
6.mapper和它的xml映射
package com.itheima.derm05.mapper;import com.itheima.derm05.pojo.Bed;
import org.apache.ibatis.annotations.Mapper;import java.util.List;public interface BedMapper {void insert(Bed bed);void delete(Integer id);void update(Bed bed);Bed selectById(Integer id);List<Bed> selectAll();
}
<?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">
<mapper namespace="com.itheima.derm05.mapper.BedMapper"><insert id="insert" parameterType="com.itheima.derm05.pojo.Bed">insert into bed (id, room_id, bed_no,status,student_no,student_name)values (#{id},#{roomId},#{bedNo},#{status},#{studentNo},#{studentName})</insert><delete id="delete" parameterType="java.lang.Integer">delete from bed where id = #{id}</delete><update id="update" parameterType="com.itheima.derm05.pojo.Bed">update bed<set><if test="roomId != null">room_id = #{roomId},</if><if test="bedNo != null">bed_no = #{bedNo},</if><if test="status != null">status = #{status},</if><if test="studentNo != null">student_no = #{studentNo},</if><if test="studentName != null">student_name = #{studentName},</if></set>where id = #{id}</update><select id="selectById" parameterType="java.lang.Integer" resultType="com.itheima.derm05.pojo.Bed">select * from bed where id = #{id}</select><select id="selectAll" resultType="com.itheima.derm05.pojo.Bed">select * from bed</select>
</mapper>
这个就是和数据库交互,在里面写sql语句
<insert id="insert" parameterType="com.itheima.derm05.pojo.Bed">insert into bed (id, room_id, bed_no,status,student_no,student_name)values (#{id},#{roomId},#{bedNo},#{status},#{studentNo},#{studentName})</insert>
这边就到了上面那个蛇形和驼峰映射的自动转换
mybatis.configuration.map-underscore-to-camel-case=true
至此java后端,基本简单的功能就实现了,后期我会更新Ajax前端交互,和代码的优化