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日

相关文章

  • Java自定义异常与异常使用的最佳方式

    Java自定义异常与异常使用的最佳方式 什么是Java异常? 在Java编程中,异常(Exception)指的是程序在运行过程中出现了不正常的事件或错误的情况。当程序运行过程中发生异常,程序会停止当前处理,转而处理异常。因此,异常处理是程序设计中一个重要的部分。 Java中的异常处理方式 Java中的异常处理方式分为两种: 捕获和处理异常 抛出异常 捕获和处…

    Java 2023年5月27日
    00
  • JavaWeb 入门篇:创建Web项目,Idea配置tomcat

    JavaWeb 入门篇:创建Web项目,Idea配置tomcat 1. 创建Web项目 首先,在Idea中打开新建项目的界面,选择”Java Enterprise”,稍等片刻,就会出现”Web Application”选项,选择该选项,并填写项目的基本信息,包括项目名称、项目路径、Java版本号、web.xml文件的路径等等。 创建好项目之后,我们需要在项目…

    Java 2023年6月2日
    00
  • Spring声明式事务配置使用详解

    Spring声明式事务配置使用详解 什么是事务 事务是一组完整的业务操作,这些操作作为一个原子单元,要么全部成功,要么全部失败回滚,保证数据库中的数据一致性。 声明式事务的优点 Spring框架提供的声明式事务管理有以下几个好处: 代码简洁:通过使用声明式事务管理,Spring框架可以将所有的数据库事务处理的代码都放在配置文件中,这样就不需要在业务逻辑代码中…

    Java 2023年5月20日
    00
  • Java正则多字符串匹配替换

    下面是Java正则多字符串匹配替换的完整攻略: 什么是Java正则匹配? Java正则匹配是Java语言内置的一种文本匹配模式,其使用正则表达式对指定的文本进行匹配和查找。正则表达式由普通字符及通配符组成,用于确定文本模式。 可以使用Java的 java.util.regex 包中的类 Pattern 和 Matcher 来进行正则匹配。 如何进行多字符串匹…

    Java 2023年5月27日
    00
  • Java下SpringBoot创建定时任务详解

    下面我将为您详细讲解“Java下SpringBoot创建定时任务详解”的完整攻略。 SpringBoot定时任务详解 什么是定时任务 定时任务指定在特定的时间段执行的一种操作,比如每天凌晨1点执行一次数据库备份操作、每分钟执行一次数据同步操作等。在开发中,经常使用定时任务来完成一些需要定期执行的任务。 SpringBoot中创建定时任务 SpringBoot…

    Java 2023年5月19日
    00
  • java操作oracle数据库示例

    以下是 Java 操作 Oracle 数据库的完整攻略: 环境 在开始之前,需要确定自己的开发环境中是否已经安装好 JDK 和 Oracle 数据库,并且已经配置好了相应的环境变量。如果没有,请先安装和配置好相应的软件和环境。 另外,如果需要在Java中操作Oracle数据库,还需要下载安装 ojdbc 驱动程序,将其放置于项目根目录下或指定的lib目录下。…

    Java 2023年5月19日
    00
  • 微信小程序配置服务器提示验证token失败的解决方法

    接下来我将详细讲解微信小程序配置服务器提示验证token失败的解决方法,并提供两个示例说明。 环境搭建 首先需要在自己的服务器上搭建一个可以运行代码的环境。这个环境需要支持HTTPS协议,并且需要设置相应的nginx或其他反向代理服务器。 配置服务器 在进行小程序服务器配置时,首先需要在公众平台申请一个小程序开发账号,并填写服务器地址和验证token。在服务…

    Java 2023年5月23日
    00
  • Java实现单例模式的五种方法介绍

    5种Java实现单例模式的方法介绍 在Java编程中,当我们希望某个类只有一个实例存在时,就需要使用单例模式。下面介绍5种Java实现单例模式的方法: 方法1:饿汉式单例模式 这种方式基于classloder机制避免了多线程的同步问题,不过instance在类装载时就实例化,虽然导致类装载的原因有很多种,在单例模式中大多数都是调用getInstance方法,…

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