前 置 任 务

  1. 安装JDK和maven,配置环境变量
  2. maven配置一下仓库路径,找到一段注释掉的“localRepository”代码,在底下加一句

    <localRepository>
       <!-- 这里换成你想要的仓库路径 -->
    </localRepository>
  3. 配置国内镜像源,在</mirrors>的上方加一段

       <mirror>
           <id>nexus-aliyun</id>
           <mirrorOf>central</mirrorOf>
           <name>Nexus aliyun</name>
           <url>http://maven.aliyun.com/nexus/content/groups/public</url>
       </mirror>
  4. 在eclipse中,找到window-Preferences-Maven-Installations,Add里面输入你的maven安装地址,然后在user Settings,在User Settings里找到你的settings.xml所在路径,正确的话,底下的localRepositary会自己蹦出来

正 式 步 骤

1.首先需要建项目(Spring Starter Project)
2.然后起个名就行了
3.建包,在com.example.demo里(其实包名是网站的倒写,如果备长炭有项目可以写成top.charcoalblog.*)

  • 放实体类:entity
  • 放数据访问层:dao
  • 放业务逻辑层:service
  • 放控制器层:controller(其实吧,开发也是按照这个顺序来的)
    4.在pom.xml中,添加自己所需要的依赖,可以去maven的仓库找,样例如下:

    <!-- 写依赖  1.前端 HTML:springboot  前端不能仅仅用HTML,thymeleaf(写在springboot中的HTML) -->
           <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
          <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-thymeleaf</artifactId>
               <version>2.7.0</version>
           </dependency>
           <!-- 2.MySQL connection -->
           <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
           <dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
               <version>8.0.28</version>
           </dependency>
    <!-- 3.mybatis依赖SQL:只关注sql语句的编写  jdbc:java代码与数据库连接技术 -->
           <!-- ssm:springmvc  spring   mybatis -->
           <!-- SSH:struct  spring  hib -->
           <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
           <dependency>
               <groupId>org.mybatis.spring.boot</groupId>
               <artifactId>mybatis-spring-boot-starter</artifactId>
               <version>2.1.3</version>
           </dependency>

5.修改springboot配置(以thymeleaf为例):


server.port=8885

#thymeleaf模板配置
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=false

#spring的mysql和mybatis相关
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/myemployees?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

mybatis.mapper-locations:classpath:/mappers/*.xml
mybatis.type-aliases-package:com.example.demo.*

6.在entity层放实体类,生成getter,setter(右键source,选择generate getters,setters,全选确定)

注意:注解@DateTimeFormat(pattern = "yyyy-MM-dd")可以规定Java的Data类型返回值格式。

7.写Dao层,Dao层写成interface的形式,主要写跟数据库交互的抽象方法,接口的上面需要写两个注解,分别是@Mapper和@Repositary,其中@mapper表示Mybatis框架中定义的一个描述数据层接口的注解,@Repositary注解修饰哪个类,则表明这个类具有对对象进行CRUD(增删改查)的功能,可以自动实例化

   import java.util.List;
   import org.apache.ibatis.annotations.Mapper;
   import org.springframework.stereotype.Repository;
   import com.example.demo.entity.Employees;
   @Mapper
   @Repository//实例化
   public interface EmpDao {
   //接口中默认的方法是抽象方法
   //获取所有员工的信息
   public List<Employees> getEmp();
   
   public int addEmp(Employees emp);
   
   public Employees getEmployees(int empid);
   
   public int updateEmp(Employees emp);
   }

8.在resources下建一个Mapper文件夹,配置映射文件EmpDao.xml,以下代码中,Mapper namespace中的值为dao包接口名全称,select id的值为dao接口里面写的抽象方法名,resultType里面写的是返回值的类型,也要写全称,parameterType表示往后端里面传参的类型,也要写全称。全称可以右键类名,点击copy qualified name就行了。

<?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.example.demo.dao.EmpDao">
    <select id="getEmp" resultType="com.example.demo.entity.Employees">
        SELECT * FROM `employees`
    </select>
    <insert id="addEmp" parameterType="com.example.demo.entity.Employees">
        INSERT INTO `employees`(`first_name`,`email`,`phone_number`,`salary`,`manager_id`,`hiredate`) 
        VALUES(#{first_name},#{email},#{phone_number},#{salary},100,'1999-01-01')
    </insert>
</mapper>

好习惯:先在sql环境测试语句的正确性,再复制到mybatis映射文件,减少开发过程中的报错,同理,变量名需要二次使用时,也必须复制粘贴,不能手敲。

9.Service层,业务逻辑层调用Dao层的方法,在类上面写@Service将其实例化,表示它是业务逻辑层。第一句就要写,“声明一个数据层的对象”(private Empdao empdao;)在上面写注解@Autowired,用来把内存中EmpDao类型对象赋值给empdao,这样不用自己new,也不会空指针异常。
在写法上,举个栗子:

//在数据业务逻辑层中调用数据访问层对象的getemp方法获取员工集合
   
   public List<Employees> getEmpService(){
       return empDao.getEmp();
   }

这个getEmp就是数据访问层Dao中的方法,实现在EmpDao.xml中,这样做的好处就是安全并且逻辑清晰,如果controller层直接访问Dao层,那么就会出现数据库安全问题,开发中不允许这样写,且业务逻辑层顾名思义,获取了集合之后,可能还要做一些更复杂的业务,比如经过计算才能返回等。

10.写Controller层,它调用业务逻辑层的方法,那么同理,要“声明一个业务逻辑层的对象”,在上面写注解AutoWired。这一层里面的方法,主要就是用来与前端进行交互,调用业务逻辑层的数据提交给前端页面,也能接受前端请求的数据提交给Service层

@GetMapping("/tomain")//描述该功能的路径
   public String tomain(Model model) {
       //获取集合,然后把这个集合带走
       List<Employees>list= empser.getEmpService();
       model.addAttribute("empList", list);
       return "main";
   }

11.编写前端页面,其实控制器层怎么写和前端页面有一定关系,这一点根据所用技术的不同而不同,敬请期待前端篇——Thymeleaf快速入门笔记,在那里会对前端和controller的关系进行具体讲解。

文章版权:备长炭

本文链接:https://charcoalblog.top/index.php/archives/27/

转载请注明文章原始出处 !

添加新评论

百度已收录
返回顶部