spring boot + mybatis+freemarker +mysql 实例演示

step 1 新建工程

选择 spring boot devtools ,
在这里插入图片描述
等同于下面引入 devtools依赖包

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
			<!-- 热部署启动后,只要重新编译工程 即可自动重新启动-->
		</dependency>

选择 spring web starter
在这里插入图片描述
等同于

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

选择 apache freemarker
在这里插入图片描述
等同于

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-freemarker</artifactId>
		</dependency>

选择mybatis和mysql driver
在这里插入图片描述
注意这里还是不要 选择mysql driver,不然引入的依赖包版本太高,可能不使用本地mysql版本,本例
选择后,引入的mysql driver 版本是 8.以上,导致程序报错。
等同于引入依赖

<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.21</version>
		</dependency>
<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.0</version>
		</dependency>

step 2 application.yml配置文件

spring:
# freemarker 配置
  freemarker:
    template-loader-path: classpath:/templates/view/
    cache: false
    charset: utf-8
    check-template-location: true
    content-type: text/html
    expose-request-attributes: false
    expose-session-attributes: false
    request-context-attribute: request
    suffix: .ftl
  # mysql 数据源
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/student?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
    driverClassName: com.mysql.jdbc.Driver
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.app.user.dto

注意这里 datasource 必须挨着spring ,如果datasource 放在 mybatis后面,
则需要再加上spring

step 3 配置mysql 数据

新建 t_user 表,并插入数据

 CREATE TABLE t_user (
   user_id   int(5) NOT NULL AUTO_INCREMENT comment '用户id' ,
  name varchar(20)  comment '用户名称' ,
  passwd varchar(20)  comment '用户密码' ,
   phone varchar(20)  comment '电话'  ,
   remark varchar(20)  comment '备注'  ,
  PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 comment '用户信息表';


insert into t_user(name,passwd,phone,remark) values('孙悟空','123456','1388888888','七十二变');
insert into t_user(name,passwd,phone,remark) values('唐三藏','123456','1311111111','大唐佛法');
insert into t_user(name,passwd,phone,remark) values('猪八戒','123456','1322222222','好色好吃');
insert into t_user(name,passwd,phone,remark) values('沙和尚','123456','1322222222','勤劳老实');

step 4 新建ftl 页面文件

文件路径放在 templates\view 下,在 templates下新建路径 view ,然后新建ftl文件 showAllUsers.ftl

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
    <span>hello world! this is spring boot and  mybatis and freemarker</span>
    <table border="1px">
    <#list datas as user>
        <tr><td>${user.user_id}</td><td> ${(user.name)!}</td><td>${(user.remark)!}</td></tr>
        <!-- 这里由于name、remark字段可以为空 所以需要进行非空处理 ,不然会报错 The following has evaluated to null or missing-->
    </#list>
    </table>
</div>
</body>

</html>

step 5 user 相关代码

新建 包 user.dao ,user.dto,user.service,user.serviceimpl,以及controller 结构如下
在这里插入图片描述
新建java 类UserDto

 package com.example.demo.user.dto;

public class UserDto {
    private Integer user_id;
    private String username;
    private String passwd;
    private String phone;
    private String remark;

    public Integer getUser_id() {
        return user_id;
    }

    public void setUser_id(Integer user_id) {
        this.user_id = user_id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPasswd() {
        return passwd;
    }

    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}

UserDao 接口

package com.example.demo.user.dao;

import com.example.demo.user.dto.UserDto;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
@Mapper
public interface UserDao {
    public List<UserDto> getUsers();
}

UserService 接口

package com.example.demo.user.service;

import com.example.demo.user.dto.UserDto;

import java.util.List;

public interface UserService {
    public List<UserDto> getUsers();
}

UserService 接口 实现类

package com.example.demo.user.service.impl;

import com.example.demo.user.dao.UserDao;
import com.example.demo.user.dto.UserDto;
import com.example.demo.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List; 
@Service(value = "userService")
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;

    @Override
    public List<UserDto> getUsers() {
        return userDao.getUsers();
    }
}

UserController 控制类

package com.example.demo.controller;

import com.example.demo.user.dto.UserDto;
import com.example.demo.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;
import java.util.Map;
 
@Controller
public class UserController {
    @Autowired
    UserService userService;
    @RequestMapping("/showAllUsers")
    public String showAllUser(Map<String,Object> map){
        List<UserDto> users=userService.getUsers();
        map.put("datas",users);
        return "showAllUsers";

    }
}

DemoApplication 代码如下:

package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

 @MapperScan("com.example.demo.user.dao")
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

step 6 新建 UserMapper 配置文件

在resource 目录下 新建mapper目录,再新建UserMapper 配置文件

<?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.user.dao.UserDao" >
    <select id="getUsers" resultType="com.example.demo.user.dto.UserDto">
        select * from t_user
    </select>
</mapper>

工程整体结构
在这里插入图片描述

step 7 启动工程 ,访问页面

http://127.0.0.1:8080/showAllUsers

在这里插入图片描述

总结:

一般启动解析application.yml错误就是application.yml配置文件格式不规范导致,一定要细心。
配置application.yml文件时一定要注意各个配置间上下级关系,以及同级配置必须有相同的空格缩进,
不能使用tab。其次mysql driver 依赖包选择一定要合适,本例mysql 版本是5.7,所以选择了mysql-connector-java
版本是5.1.21。

路漫漫其修远兮,吾将上下而求索。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜的中年程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值