SpringMVC mybatis整合实例代码详解

SpringMVC MyBatis整合实例代码详解

SpringMVC和MyBatis是两个非常流行的Java Web框架,它们都有自己的优点和特点。在本文中,我们将详细讲解如何将SpringMVC和MyBatis整合起来,以便更好地开发Web应用程序。

整合步骤

整合SpringMVC和MyBatis需要以下步骤:

  1. 添加依赖
  2. 配置数据源
  3. 配置MyBatis
  4. 配置SpringMVC
  5. 编写代码

下面我们将逐一讲解这些步骤。

添加依赖

首先,我们需要添加SpringMVC和MyBatis的依赖。下面是一个使用Maven的示例:

<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.9</version>
  </dependency>
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version>
  </dependency>
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.7</version>
  </dependency>
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.8</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
  </dependency>
</dependencies>

在上面的代码中,我们添加了SpringMVC、MyBatis、Druid和MySQL的依赖。

配置数据源

接下来,我们需要配置数据源。在本文中,我们使用Druid作为数据源。下面是一个使用Druid的示例:

@Configuration
public class DataSourceConfig {
  @Bean
  public DataSource dataSource() {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC");
    dataSource.setUsername("root");
    dataSource.setPassword("password");
    return dataSource;
  }
}

在上面的代码中,我们使用@Configuration注解来配置数据源,并使用@Bean注解来创建DruidDataSource对象。我们还设置了数据库的URL、用户名和密码。

配置MyBatis

接下来,我们需要配置MyBatis。下面是一个使用MyBatis的示例:

@Configuration
@MapperScan("com.example.mapper")
public class MyBatisConfig {
  @Autowired
  private DataSource dataSource;

  @Bean
  public SqlSessionFactoryBean sqlSessionFactory() throws Exception {
    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    sessionFactory.setDataSource(dataSource);
    sessionFactory.setTypeAliasesPackage("com.example.entity");
    return sessionFactory;
  }

  @Bean
  public MapperScannerConfigurer mapperScannerConfigurer() {
    MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
    scannerConfigurer.setBasePackage("com.example.mapper");
    return scannerConfigurer;
  }
}

在上面的代码中,我们使用@Configuration注解来配置MyBatis,并使用@MapperScan注解来扫描Mapper接口。我们还使用@Autowired注解来注入数据源,并使用SqlSessionFactoryBean来创建SqlSessionFactory对象。我们还使用MapperScannerConfigurer来扫描Mapper接口。

配置SpringMVC

接下来,我们需要配置SpringMVC。下面是一个使用SpringMVC的示例:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class MvcConfig implements WebMvcConfigurer {
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**").addResourceLocations("/static/");
  }

  @Bean
  public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");
    return viewResolver;
  }
}

在上面的代码中,我们使用@Configuration注解来配置SpringMVC,并使用@EnableWebMvc注解来启用SpringMVC。我们还使用@ComponentScan注解来扫描Controller。我们还使用addResourceHandlers方法来添加静态资源处理器,并使用InternalResourceViewResolver来配置视图解析器。

编写代码

最后,我们需要编写代码。下面是一个使用SpringMVC和MyBatis的示例:

@Controller
public class UserController {
  @Autowired
  private UserService userService;

  @GetMapping("/users")
  public String getUsers(Model model) {
    List<User> users = userService.getUsers();
    model.addAttribute("users", users);
    return "users";
  }
}

@Service
public class UserServiceImpl implements UserService {
  @Autowired
  private UserMapper userMapper;

  @Override
  public List<User> getUsers() {
    return userMapper.getUsers();
  }
}

public interface UserMapper {
  List<User> getUsers();
}

public class User {
  private Long id;
  private String name;
  private Integer age;
  // getters and setters
}

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

在上面的代码中,我们创建了一个名为“UserController”的Controller,并注入了一个名为“userService”的Service。我们还创建了一个名为“UserServiceImpl”的Service,并注入了一个名为“userMapper”的Mapper。我们还创建了一个名为“UserMapper”的Mapper接口,并创建了一个名为“User”的实体类。我们还创建了一个名为“UserService”的Service接口。

示例说明

示例1:使用SpringMVC和MyBatis查询用户列表

在本示例中,我们将使用SpringMVC和MyBatis查询用户列表。我们将创建一个名为“UserController”的Controller,并注入一个名为“userService”的Service。我们还将创建一个名为“UserServiceImpl”的Service,并注入一个名为“userMapper”的Mapper。我们还将创建一个名为“UserMapper”的Mapper接口,并创建一个名为“User”的实体类。我们还将创建一个名为“UserService”的Service接口。

在UserController中添加以下方法:

@GetMapping("/users")
public String getUsers(Model model) {
  List<User> users = userService.getUsers();
  model.addAttribute("users", users);
  return "users";
}

在UserServiceImpl中添加以下方法:

@Override
public List<User> getUsers() {
  return userMapper.getUsers();
}

在UserMapper中添加以下方法:

List<User> getUsers();

在User中添加以下属性和方法:

private Long id;
private String name;
private Integer age;
// getters and setters

在UserService中添加以下方法:

List<User> getUsers();

在MyBatisConfig中添加以下方法:

@Bean
public SqlSessionFactoryBean sqlSessionFactory() throws Exception {
  SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
  sessionFactory.setDataSource(dataSource);
  sessionFactory.setTypeAliasesPackage("com.example.entity");
  sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
  return sessionFactory;
}

在resources目录下创建一个名为“mapper”的目录,并在其中创建一个名为“UserMapper.xml”的文件,内容如下:

<mapper namespace="com.example.mapper.UserMapper">
  <select id="getUsers" resultType="com.example.entity.User">
    select * from user
  </select>
</mapper>

在WEB-INF目录下创建一个名为“views”的目录,并在其中创建一个名为“users.jsp”的文件,内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Users</title>
</head>
<body>
  <table>
    <thead>
      <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Age</th>
      </tr>
    </thead>
    <tbody>
      <c:forEach items="${users}" var="user">
        <tr>
          <td>${user.id}</td>
          <td>${user.name}</td>
          <td>${user.age}</td>
        </tr>
      </c:forEach>
    </tbody>
  </table>
</body>
</html>

在MvcConfig中添加以下方法:

@Bean
public InternalResourceViewResolver viewResolver() {
  InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
  viewResolver.setPrefix("/WEB-INF/views/");
  viewResolver.setSuffix(".jsp");
  return viewResolver;
}

在DataSourceConfig中添加以下方法:

@Bean
public DataSource dataSource() {
  DruidDataSource dataSource = new DruidDataSource();
  dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
  dataSource.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC");
  dataSource.setUsername("root");
  dataSource.setPassword("password");
  dataSource.setInitialSize(5);
  dataSource.setMinIdle(5);
  dataSource.setMaxActive(20);
  dataSource.setMaxWait(60000);
  dataSource.setTimeBetweenEvictionRunsMillis(60000);
  dataSource.setMinEvictableIdleTimeMillis(300000);
  dataSource.setValidationQuery("SELECT 1 FROM DUAL");
  dataSource.setTestWhileIdle(true);
  dataSource.setTestOnBorrow(false);
  dataSource.setTestOnReturn(false);
  dataSource.setPoolPreparedStatements(true);
  dataSource.setMaxPoolPreparedStatementPerConnectionSize(20);
  dataSource.setFilters("stat,wall");
  return dataSource;
}

在上面的代码中,我们使用DruidDataSource来配置数据源,并设置了一些连接池的参数。我们还使用SqlSessionFactoryBean来配置MyBatis,并使用@MapperScan注解来扫描Mapper接口。我们还使用InternalResourceViewResolver来配置视图解析器,并使用@GetMapping注解来处理GET请求。

示例2:使用SpringMVC和MyBatis添加用户

在本示例中,我们将使用SpringMVC和MyBatis添加用户。我们将创建一个名为“UserController”的Controller,并注入一个名为“userService”的Service。我们还将创建一个名为“UserServiceImpl”的Service,并注入一个名为“userMapper”的Mapper。我们还将创建一个名为“UserMapper”的Mapper接口,并创建一个名为“User”的实体类。我们还将创建一个名为“UserService”的Service接口。

在UserController中添加以下方法:

@GetMapping("/add")
public String addUserForm(Model model) {
  model.addAttribute("user", new User());
  return "addUser";
}

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

在UserServiceImpl中添加以下方法:

@Override
public void addUser(User user) {
  userMapper.addUser(user);
}

在UserMapper中添加以下方法:

void addUser(User user);

在User中添加以下属性和方法:

private Long id;
private String name;
private Integer age;
// getters and setters

在UserService中添加以下方法:

void addUser(User user);

在MyBatisConfig中添加以下方法:

@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
  MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
  scannerConfigurer.setBasePackage("com.example.mapper");
  Properties properties = new Properties();
  properties.setProperty("mappers", "org.apache.ibatis.annotations.Mapper");
  properties.setProperty("notEmpty", "false");
  properties.setProperty("IDENTITY", "MYSQL");
  scannerConfigurer.setProperties(properties);
  return scannerConfigurer;
}

在resources目录下创建一个名为“mapper”的目录,并在其中创建一个名为“UserMapper.xml”的文件,内容如下:

<mapper namespace="com.example.mapper.UserMapper">
  <insert id="addUser" parameterType="com.example.entity.User">
    insert into user(name, age) values(#{name}, #{age})
  </insert>
</mapper>

在WEB-INF目录下创建一个名为“views”的目录,并在其中创建一个名为“addUser.jsp”的文件,内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Add User</title>
</head>
<body>
  <form method="post" action="/add">
    <label>Name:</label>
    <input type="text" name="name" required>
    <br>
    <label>Age:</label>
    <input type="number" name="age" required>
    <br>
    <button type="submit">Add User</button>
  </form>
</body>
</html>

在MvcConfig中添加以下方法:

@Bean
public InternalResourceViewResolver viewResolver() {
  InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
  viewResolver.setPrefix("/WEB-INF/views/");
  viewResolver.setSuffix(".jsp");
  return viewResolver;
}

在DataSourceConfig中添加以下方法:

@Bean
public DataSource dataSource() {
  DruidDataSource dataSource = new DruidDataSource();
  dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
  dataSource.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC");
  dataSource.setUsername("root");
  dataSource.setPassword("password");
  dataSource.setInitialSize(5);
  dataSource.setMinIdle(5);
  dataSource.setMaxActive(20);
  dataSource.setMaxWait(60000);
  dataSource.setTimeBetweenEvictionRunsMillis(60000);
  dataSource.setMinEvictableIdleTimeMillis(300000);
  dataSource.setValidationQuery("SELECT 1 FROM DUAL");
  dataSource.setTestWhileIdle(true);
  dataSource.setTestOnBorrow(false);
  dataSource.setTestOnReturn(false);
  dataSource.setPoolPreparedStatements(true);
  dataSource.setMaxPoolPreparedStatementPerConnectionSize(20);
  dataSource.setFilters("stat,wall");
  return dataSource;
}

在上面的代码中,我们使用DruidDataSource来配置数据源,并设置了一些连接池的参数。我们还使用SqlSessionFactoryBean来配置MyBatis,并使用MapperScannerConfigurer来扫描Mapper接口。我们还使用InternalResourceViewResolver来配置视图解析器,并使用@GetMapping和@PostMapping注解来处理GET和POST请求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC mybatis整合实例代码详解 - Python技术站

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

相关文章

  • JS携带参数实现页面跳转功能

    JS携带参数实现页面跳转功能攻略 在开发Web应用时,经常需要跳转到另一个页面,并携带一些参数。本文将详细讲解如何使用JavaScript实现这个功能。 实现思路 在JavaScript中,可以使用window.location对象实现页面的跳转。为了携带参数,可以将参数附加在URL的后面,形如http://example.com/?key1=value1&…

    Java 2023年6月15日
    00
  • 解决IDEA中Maven依赖包导入失败报红问题(总结最有效8种解决方案)

    下面我将为你详细讲解解决IDEA中Maven依赖包导入失败报红问题的完整攻略,共包含8种最有效的解决方案。 1. 检查网络连接和Maven配置 网络连接不稳定以及Maven的配置问题都可能导致依赖包导入失败报红问题。首先,确保你的网络连接正常,其次,检查Maven配置文件,确认是否正确地配置了Maven镜像等相关信息。 2. 清除本地Maven库的缓存 清除…

    Java 2023年5月19日
    00
  • Sprint Boot @EnableScheduling使用方法详解

    Spring Boot的@EnableScheduling注解 在Spring Boot中,@EnableScheduling注解用于启用定时任务的支持。使用@EnableScheduling注解可以将带有@Scheduled注解的方法标记为定时任务,并在应用程序启动时自动注册这些任务。本文将详细介绍@EnableScheduling注解的作用和使用方法,并…

    Java 2023年5月5日
    00
  • Java实现按行分割大文件

    以下是Java实现按行分割大文件的完整攻略,包含步骤、代码示例和输出结果。 步骤一:准备工作 首先,需要导入Java中的IO包,以便读取和处理文件。 import java.io.*; 接着,需要定义一个方法来实现按行分割文件,命名为splitByLine。 public static void splitByLine(String fileName, in…

    Java 2023年5月20日
    00
  • SpringMVC实现多文件上传

    以下是关于“SpringMVC实现多文件上传”的完整攻略,其中包含两个示例。 SpringMVC实现多文件上传 在SpringMVC中,我们可以通过MultipartFile类来实现多文件上传。在本文中,我们将讲解如何使用MultipartFile类来实现多文件上传。 多文件上传实现原理 SpringMVC通过使用MultipartFile类来实现多文件上传…

    Java 2023年5月17日
    00
  • Spring RestTemplate具体使用详解

    Spring RestTemplate具体使用详解 简介 RestTemplate是Spring提供的专门用于调用Restful风格的Web服务的客户端工具,它封装了底层的HTTP连接以及常用的HTTP请求方法,包括GET、POST、PUT、DELETE等,可以大大简化我们调用Web服务的代码量。 基本用法 使用RestTemplate最基本的用法是通过创建…

    Java 2023年5月20日
    00
  • Java持久层框架Mybatis入门详细教程

    Java持久层框架Mybatis入门详细教程 什么是Mybatis? Mybatis是一种ORM(Object Relational Mapping)框架,它把数据库操作转换为面向对象编程语言的操作,让我们可以通过调用一个接口即可实现对数据库的CRUD操作,极大地提高了开发的效率。同时,Mybatis还具有可扩展、灵活性高、易于调试等特点,被广泛应用于Jav…

    Java 2023年5月20日
    00
  • 什么是Java运行时编译器(JIT)?

    Java运行时编译器(JIT)是一种在运行期间对 Java 代码进行即时编译的技术。它可以对被多次调用的方法进行编译优化,从而提高程序的运行效率。 使用JIT的过程如下: 启动Java虚拟机时,我们可以通过以下参数开启JIT编译器: java -XX:+TieredCompilation MyProgram 这条命令将启用分层编译模式,使JIT能够针对代码的…

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