给我一个用Spring MVC和mybatis的得到用户输入数据并向数据库名为library、表名称为message列为name book_id book_namemessager_content date_time中增加信息的案例详细
首先,需要在项目的pom.xml文件中引入Spring MVC和MyBatis的依赖,如下所示:
<dependencies>
<!-- Spring MVC依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<!-- MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
</dependencies>
接着,需要配置Spring MVC的DispatcherServlet和MyBatis的SqlSessionFactory,这里使用Java配置方式。
首先是Spring MVC的配置:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class MvcConfig implements WebMvcConfigurer {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
}
}
上述配置启用了Spring MVC的默认Servlet,并将静态资源映射到/static/目录下。
接着是MyBatis的配置:
@Configuration
@MapperScan("com.example.mapper")
public class MybatisConfig {
@Bean
public DataSource dataSource() {
// 配置数据源,这里使用HikariCP
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/library");
dataSource.setUsername("root");
dataSource.setPassword("123456");
return dataSource;
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
// 配置SqlSessionFactory
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
return sessionFactory.getObject();
}
}
上述配置使用HikariCP作为数据源,并将Mapper接口的映射文件放在classpath:mapper/目录下。
接下来是Controller的实现,这里提供一个简单的示例:
@Controller
@RequestMapping("/message")
public class MessageController {
private final MessageMapper messageMapper;
@Autowired
public MessageController(MessageMapper messageMapper) {
this.messageMapper = messageMapper;
}
@GetMapping("/add")
public String add() {
return "add_message";
}
@PostMapping("/save")
public String save(@RequestParam("name") String name,
@RequestParam("book_id") Long bookId,
@RequestParam("book_name") String bookName,
@RequestParam("message_content") String content,
Model model) {
Message message = new Message();
message.setName(name);
message.setBookId(bookId);
message.setBookName(bookName);
message.setMessageContent(content);
message.setDateTime(new Date());
messageMapper.insertMessage(message);
model.addAttribute("message", message);
return "message_detail";
}
}
上述Controller包含两个方法,一个用于展示增加信息的页面,另一个用于处理表单提交并保存信息到数据库。
最后是Mapper接口和映射文件的实现,这里只提供一个示例:
@Mapper
public interface MessageMapper {
@Insert("INSERT INTO message(name, book_id, book_name, message_content, date_time)" +
"VALUES(#{name}, #{bookId}, #{bookName}, #{messageContent}, #{dateTime})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void insertMessage(Message message);
}
上述Mapper接口使用@Insert注解指定SQL语句,并使用@Options注解指定自动生成主键,并将主键值设置到Message对象的id属性中。
这样,就完成了使用Spring MVC和MyBatis向数据库中增加信息的实现
原文地址: http://www.cveoy.top/t/topic/gE6r 著作权归作者所有。请勿转载和采集!