目录1.第一种方式:@Mapper2.第二种方式@MapperScan3.第三种方式:Mapper文件和Dao接口分开管理4.事务使用mybatis框架操作数据,在SpringBoo
使用mybatis框架操作数据,在SpringBoot框架中集成mybatis
使用步骤:
mybatis起步依赖:完成mybatis对象自动配置,对象放在容器中。
<dependencies>
<!-- WEB起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybaitis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<!-- Mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
pom.xml指定把src/main/java目录中的xml文件包含到classpath中。
<build>
<!-- resources插件-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**
@Mapper
public interface StudentDao {
Student selectById(@Param("stuId") Integer id);
}
创建Dao接口对应的Mapper文件,xml文件,写sql语句。
@Mapper
public interface StudentDao {
Student selectById(@Param("stuId") Integer id);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"Http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.firewolf.dao.StudentDao">
<!-- 定义sql语句-->
<select id="selectById" resultType="com.firewolf.model.Student">
select id,name,age from student where id=#{stuId}
</select>
</mapper>
创建servlet层对象,创建StudentService接口和它的实现类。去调用dao对象的方法,完成数据库的操作。
package com.firewolf.service;
public interface StudentService {
Student queryStudent(Integer id);
}
package com.firewolf.service.impl;
@Service
public class StudentServiceImpl implements StudentService {
@Resource
private StudentDao studentDao;
@Override
public Student queryStudent(Integer id) {
Student student=studentDao.selectById(id);
return student;
}
}
创建Controller对象,访问Service。
@Controller
public class StudentController {
@Resource
private StudentService studentService;
@RequestMapping("/student/query")
@ResponseBody
public String queryStudent(Integer id){
Student student = studentService.queryStudent(id);
return student.toString();
}
}
写application.properties文件。
配置数据库的连接信息
server.port=9001
server.servlet.context-path=/ORM
# 连接数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springdb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.passWord=991231gao
@Mapper:放在dao接口的上面,每个接口都需要使用这个注解。
@Mapper
public interface StudentDao {
Student selectById(@Param("stuId") Integer id);
}
@SpringBootApplication
@MapperScan(basePackages = {"com.firewolf.dao","com.firewolf.mapper"})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
现在把Mapper文件放在resources
# 指定mapper文件的位置
mybatis.mapper-locations=classpath:mapper*.*</include>
</includes>
</resource>
</resources>
spring框架中的事务
管理事务的对象:事务管理器(接口,接口有很多的实现类)。
例如:使用jdbc或mybatis访问数据库,使用事务管理器:DataSourceTransactionManager
声明式事务:在xml配置文件或者使用注解说明事务控制的内容。
控制事务:隔离级别,传播行为,超时时间。
事务处理方式
springboot中使用事务:上面的两种方式都可以。
@SpringBootApplication
@EnableTransactionManagement
@MapperScan(value="com.firewolf.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
例子:
@Transactional
@Override
public int addStudent(Student student) {
System.out.println("业务方法addStudent");
int rows = studentDao.insert(student);
System.out.println("执行sql语句");
//抛出一个运行时异常, 目的是回滚事务
//int m = 10 / 0 ;
return rows;
}
到此这篇关于SpringBoot实现ORM操作MySQL的几种方法的文章就介绍到这了,更多相关SpringBoot ORM操作MySQL内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: SpringBoot实现ORM操作MySQL的几种方法
本文链接: https://lsjlt.com/news/139787.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0