spring boot 学习笔记<2>----整合mybatis和freemarker

时间:2022-05-06 19:41:05

通常一段程序的运行自然少不了同数据库,页面打交道了,今天主要介绍springboot 和mybatis、freemarker整合步骤及遇到的一些坑。

一、springboot整合mabatis

利用mybatis技术来访问数据库,实现数据的CRUD

1.添加依赖

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

2.添加数据配置

在项目根目录新增application.properties,添加如下内容+

server.port=8011

#jdbc
spring.datasource.url=jdbc:mysql://192.168.64.132:3306/test
spring.datasource.username=root
spring.datasource.password=Pass1234
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
spring.datasource.validation-query=SELECT 1
spring.datasource.test-on-borrow=false
spring.datasource.test-while-idle=true
spring.datasource.time-between-eviction-runs-millis=18800
spring.datasource.jdbc-interceptors=ConnectionState;SlowQueryReport(threshold=0)


2.1 指定了tomcat访问端口8011

2.2 配置数据库连接信息,数据库连接池信息

3.编写model

public class User {
private Integer id;
private String userName;
private String password;
private Integer age;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}
###注意:数据库字段命名也要保持驼峰式命名法则

4.编写Mapper

@Mapper
public interface UserMapper {
@Select("select * from user where userName = #{name}")
User findUserByName(@Param("name")String name);
}

5.编写测试类


@RestController
public class TestController {
@Autowired
UserMapper userMapper;
@RequestMapping(value="/hello",method = RequestMethod.GET)
public String hello(){
User user = userMapper.findUserByName("王伟");
return user.getUserName()+"-----"+user.getAge();
}
}
6.在浏览器输入http://127.0.0.1:8011/hello,从数据库查询到王伟的个人信息

王伟-----24

注意:@RestController 的使用,支持Rest访问,然仅仅使用@Controller是无法访问的。

@RestController等价于@Controller和@RequestBody

二、springboot 整合freemarker

想要做页面展示,需要结合模板技术来实现

1.添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2.添加freemarker 配置

在application.properties,添加如下内容

# FREEMARKER (FreeMarkerAutoConfiguration)
spring.freemarker.allow-request-override=false
spring.freemarker.allow-session-override=false
spring.freemarker.cache=true
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
spring.freemarker.content-type=text/html
spring.freemarker.enabled=true
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=true
spring.freemarker.prefer-file-system-access=true
spring.freemarker.suffix=.ftl
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.settings.template_update_delay=0
spring.freemarker.settings.default_encoding=UTF-8
spring.freemarker.settings.classic_compatible=true
spring.freemarker.order=1
3.编写ftl 文件

在resources下新建文件夹templates,在templates下新建test.ftl

<!DOCTYPE html>

<html lang="en">

<body>
Date: ${time?date}
<br>
Time: ${time?time}
<br>
Message: ${message}
</body>

</html>
4.编写测试类

@Controller
public class TestController {
@Autowired
UserMapper userMapper;

@RequestMapping("/test")
public String testWeb(Map<String,Object> model){
model.put("time",new Date());
User user = userMapper.findUserByName("王伟");
model.put("message",user.getUserName());
return "test"; //返回 templates文件夹下ftl文件名称

}
}
5. 运行启动类  在浏览器输入http://127.0.0.1:8011/test,

spring boot 学习笔记<2>----整合mybatis和freemarker

注意到:测试类使用了@Controller

原因是:

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
例如:本来应该到success.jsp页面的,则其显示success.
2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

三、配置静态资源文件

.spring boot默认加载文件的路径是 
/META-INF/resources/ 
/resources/ 
/static/ 
/public/ 

在resources下新建css,js,image文件夹 用于存放静态文件

spring boot 学习笔记<2>----整合mybatis和freemarker