构建SpringBoot+MyBatis+Freemarker的项目详解

以下是详细讲解“构建SpringBoot+MyBatis+Freemarker的项目详解”的完整攻略。

1. 创建SpringBoot项目

首先,打开IDEA,点击创建一个新项目,选择Spring Initializr,选择构建工具为Maven,添加所需依赖,包含以下依赖:

Spring Web
MyBatis Framework
MySQL Driver
Freemarker
Lombok

这里使用的数据库为MySQL,可以根据自己的需要选择不同的数据库。

点击Finish完成项目创建。

2. 配置MyBatis

  1. 创建MyBatis的SQL映射文件,其中包含需要执行的SQL语句。

  2. 创建Mapper接口,其中定义对应的SQL语句方法。

  3. 在application.properties文件中配置数据库信息,包括数据库名、用户名和密码等。

  4. 加载MyBatis配置文件,在其中注册Mapper接口。

完整示例:

SQL映射文件(userMapper.xml):

<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="getUserById" resultType="User">
        select * from user where id=#{id}
    </select>
</mapper>

Mapper接口(UserMapper.java):

public interface UserMapper {
    User getUserById(int id);
}

application.properties配置:

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root

MyBatis配置类(MybatisConfig.java):

@Configuration
@MapperScan("com.example.demo.mapper")
public class MybatisConfig {
    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sessionFactory.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml"));
        return sessionFactory.getObject();
    }

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(env.getProperty("spring.datasource.driverClassName"));
        dataSource.setUrl(env.getProperty("spring.datasource.url"));
        dataSource.setUsername(env.getProperty("spring.datasource.username"));
        dataSource.setPassword(env.getProperty("spring.datasource.password"));
        return dataSource;
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }
}

3. 配置Freemarker

  1. 创建Freemarker的模板文件,用于生成响应内容。

  2. 在application.properties中设置Freemarker的基本配置,如编码、模板文件位置等。

  3. 在Controller中通过ModelAndView传递数据,并指定要使用的模板文件。

完整示例:

Freemarker模板文件(user.ftl):

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户信息</title>
</head>
<body>
    <h1>用户信息</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
        </tr>
        <tr>
            <td>${user.id}</td>
            <td>${user.name}</td>
            <td>${user.sex}</td>
            <td>${user.age}</td>
        </tr>
    </table>
</body>
</html>

application.properties配置:

spring.freemarker.charset=utf-8
spring.freemarker.template-loader-path=classpath:/templates

Controller代码:

@Controller
public class UserController {
    private final UserMapper userMapper;

    @Autowired
    public UserController(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @GetMapping("/user/{id}")
    public ModelAndView getUser(@PathVariable("id") int id) {
        User user = userMapper.getUserById(id);
        ModelAndView modelAndView = new ModelAndView("user");
        modelAndView.addObject("user", user);
        return modelAndView;
    }
}

4. 示例

接下来,我们通过两个示例来演示如何使用SpringBoot+MyBatis+Freemarker构建项目。

示例1:查询用户信息

我们要求通过URL中的id参数,查询对应的用户信息,并将查询结果展示在页面上。

  1. 在数据库中添加一张user表,包含字段id、name、sex和age。

  2. 创建User实体类,其中包含以上字段以及相应的get和set方法。

  3. 创建UserMapper和userMapper.xml文件,其中包括getUserById方法。

  4. 创建UserController,其中包含@GetMapping("/user/{id}")方法,使用@PathVariable注解获取URL中的id参数,并通过UserMapper查询对应用户信息,将结果传递给ModelAndView,并设置要使用的模板文件为"user.ftl"。

完整代码如下:

User实体类:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private String sex;
    private int age;
}

UserMapper.java文件:

public interface UserMapper {
    User getUserById(int id);
}

userMapper.xml文件:

<mapper namespace="com.example.demo.mapper.UserMapper">
    <select id="getUserById" resultType="User">
        select * from user where id=#{id}
    </select>
</mapper>

UserController.java文件:

@Controller
public class UserController {
    private final UserMapper userMapper;

    @Autowired
    public UserController(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @GetMapping("/user/{id}")
    public ModelAndView getUser(@PathVariable("id") int id) {
        User user = userMapper.getUserById(id);
        ModelAndView modelAndView = new ModelAndView("user");
        modelAndView.addObject("user", user);
        return modelAndView;
    }
}

user.ftl模板文件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户信息</title>
</head>
<body>
    <h1>用户信息</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
        </tr>
        <tr>
            <td>${user.id}</td>
            <td>${user.name}</td>
            <td>${user.sex}</td>
            <td>${user.age}</td>
        </tr>
    </table>
</body>
</html>

示例2:添加用户信息

我们要求通过表单提交,向数据库中添加一条用户信息,添加成功后展示成功信息,并给出链接跳转到对应用户信息页面。

  1. 在UserController中添加@GetMapping("/user/add")和@PostMapping("/user/add")两个方法,分别用来展示添加用户的表单页面和处理表单提交的结果。在@GetMapping("/user/add")方法中创建一个空的User对象,将其传递给ModelAndView,使表单可以根据User对象进行绑定和数据验证。

  2. 在user.ftl文件中添加一个链接,用于跳转到添加用户的页面。

完整代码如下:

UserController.java文件:

@Controller
public class UserController {
    private final UserMapper userMapper;

    @Autowired
    public UserController(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @GetMapping("/user/{id}")
    public ModelAndView getUser(@PathVariable("id") int id) {
        User user = userMapper.getUserById(id);
        ModelAndView modelAndView = new ModelAndView("user");
        modelAndView.addObject("user", user);
        return modelAndView;
    }

    @GetMapping("/user/add")
    public ModelAndView addUser() {
        ModelAndView modelAndView = new ModelAndView("addUser");
        modelAndView.addObject("user", new User());
        return modelAndView;
    }

    @PostMapping("/user/add")
    public String addUser(@ModelAttribute User user) {
        userMapper.addUser(user);
        return "redirect:/success";
    }

    @GetMapping("/success")
    public String showSuccess() {
        return "success";
    }
}

addUser.ftl模板文件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
    <h1>添加用户</h1>
    <form action="/user/add" method="post">
        <table>
            <tr>
                <th>姓名</th>
                <td><input type="text" name="name" value="${user.name}"></td>
            </tr>
            <tr>
                <th>性别</th>
                <td>
                    <select name="sex">
                        <option value="男">男</option>
                        <option value="女">女</option>
                    </select>
                </td>
            </tr>
            <tr>
                <th>年龄</th>
                <td><input type="text" name="age" value="${user.age}"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="提交"></td>
            </tr>
        </table>
    </form>
</body>
</html>

success.ftl模板文件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>操作成功</title>
</head>
<body>
    <h1>操作成功</h1>
    <p>用户信息已成功添加,请返回<a href="/user">用户列表</a>页面查看</p>
</body>
</html>

user.ftl模板文件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户信息</title>
</head>
<body>
    <h1>用户信息</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
        </tr>
        <tr>
            <td>${user.id}</td>
            <td>${user.name}</td>
            <td>${user.sex}</td>
            <td>${user.age}</td>
        </tr>
    </table>
    <a href="/user/add">添加用户</a>
</body>
</html>

以上就是完整的“构建SpringBoot+MyBatis+Freemarker的项目详解”的攻略。希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:构建SpringBoot+MyBatis+Freemarker的项目详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 什么是Java编译期注解?

    Java编译期注解是一种在Java编译时期处理的注解,它通过在源代码上附加注释信息的方式,在Java程序编译期处理中对注解进行分析并进行特定处理,从而可以在程序运行期间实现一些自定义功能。 以下是Java编译期注解的一些使用攻略: 1. 创建注解类 首先,我们需要定义一个注解类。注意,注解类的定义必须加上 @interface,以表示它是一个注解。 @Ret…

    Java 2023年5月11日
    00
  • JS、CSS加载中的小问题探讨

    我们来详细讲解“JS、CSS加载中的小问题探讨”的完整攻略。 背景 首先,我们需要了解一下JS和CSS的加载方式。在浏览器中,JS和CSS的加载是异步的,也就是说它们的加载是不阻塞页面渲染的。这也就意味着我们无法保证JS和CSS的加载顺序,可能出现JS依赖CSS但是CSS未被加载完成的情况。这时就会出现一些小问题。 问题探讨 问题一:JS依赖CSS但CSS未…

    Java 2023年6月16日
    00
  • 详解Java事件编程的使用

    详解Java事件编程的使用 什么是Java事件编程? 在Java编程中,事件是指程序或用户可以监测到并有可能做出反应的操作或通知。Java事件编程是基于事件模型的一种编程方法,也是一种事件驱动的编程方式。 事件驱动编程的核心在于将程序设计为一个能够响应特定事件的系统。在这种模式下,程序设计者无需关注具体的事件何时发生,只需要定义如何响应事件即可。 Java事…

    Java 2023年5月23日
    00
  • Java中的函数式编程

    下面是Java中函数式编程的完整攻略及示例。 函数式编程概述 函数式编程是一种编程范式,其核心思想是把计算机运算看作是数学上的函数计算。函数式编程的一个关键特点是它支持高阶函数,即函数可以作为另一个函数的参数或返回值。Java 8引入了Lambda表达式和函数式接口,使得Java也支持函数式编程。 Lambda表达式 Lambda表达式是Java 8引入的一…

    Java 2023年5月19日
    00
  • 解决idea使用过程中让你觉得不爽的一些问题(小结)

    解决idea使用过程中让你觉得不爽的一些问题 IntelliJ IDEA 是一款非常强大的 Java 集成开发环境,但是在使用过程中会遇到一些让人不爽的问题。下面是解决这些问题的攻略。 问题一:IntelliJ IDEA 启动慢 解决办法: 删除项目中的 .idea 文件夹,清空缓存 在 IntelliJ IDEA 中,提供了清除缓存的功能,操作步骤是:点击…

    Java 2023年5月20日
    00
  • maven如何使用slf4j输出日志到文件

    使用 Maven 来构建项目时,常常需要对项目的运行状态进行日志记录,方便项目的调试和交付。SLF4J 是一个 Java 日志框架,具有轻量级、可扩展的特点,同时提供了多种日志实现的接口,便于灵活选择。本文将介绍如何使用 SLF4J 日志框架,在项目中输出日志到文件。 1. 引入依赖 首先,需要在项目中引入 SLF4J 的依赖。在工程的 pom.xml 文件…

    Java 2023年5月19日
    00
  • Java实现读取及生成Excel文件的方法

    生成Excel文件可以使用Apache POI库,读取Excel文件可以使用JXL或者Apache POI库。 使用Apache POI进行Excel文件读取及生成 要使用Apache POI进行Excel文件处理,需要添加以下maven依赖: <dependency> <groupId>org.apache.poi</grou…

    Java 2023年5月20日
    00
  • 基于Listener监听器生命周期(详解)

    基于Listener监听器生命周期(详解) 在Java Web应用中,我们可以通过监听器(Listener)来监听 Web应用中的事件,如ServletContext的创建与销毁、HttpSession的创建与销毁、ServletRequest的创建与销毁等等。本文将详细介绍Listener的生命周期。 1. Listener简介和分类 Listener(监…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部