关于“mybatis集成到spring的方式详解”的完整攻略,以下是步骤及示例。
1. 引入相关依赖
在pom.xml文件中引入mybatis和mybatis-spring的依赖,如下所示:
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- MyBatis-Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
2. 添加数据源配置
在Spring的配置文件中,添加数据源配置,如下所示:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/demo?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
3. 配置SqlSessionFactory
在Spring的配置文件中,添加SqlSessionFactory的配置,如下所示:
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.example.dao" />
<property name="mapperLocations"
value="classpath*:com/example/dao/*.xml" />
</bean>
其中,typeAliasesPackage
指定映射类所在的包,mapperLocations
指定mapper文件的路径。
4. 注册Mapper接口
在Spring的配置文件中,注册Mapper接口,如下所示:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.dao" />
</bean>
其中,basePackage
指定Mapper接口所在的包。
示例1:操作MySQL数据库
- 创建数据库表
使用以下SQL语句,在MySQL数据库中创建一个user表:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
- 创建映射类
在com.example.dao包中创建UserMapper.java类,定义查询user表的方法:
public interface UserMapper {
List<User> findAll();
}
- 创建映射文件
在com.example.dao包中创建UserMapper.xml文件,编写查询user表的SQL语句:
<?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.example.dao.UserMapper">
<select id="findAll" resultType="com.example.entity.User">
SELECT * FROM user
</select>
</mapper>
- 创建实体类
在com.example.entity包中创建User.java类,定义对应user表的实体类:
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
}
- 编写测试代码
在com.example包中创建TestUserMapper.java类,编写测试代码,如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring.xml"})
public class TestUserMapper {
@Autowired
private UserMapper userMapper;
@Test
public void testFindAll() {
List<User> list = userMapper.findAll();
System.out.println(list);
}
}
- 运行测试代码
运行TestUserMapper.java类中的测试方法,可以看到查询结果输出到控制台。
示例2:操作Oracle数据库
- 修改数据源配置
在Spring的配置文件中,修改数据源配置,如下所示:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
</bean>
- 编写查询SQL语句
在Oracle数据库中,创建一个dept表,并插入一些数据,使用以下SQL语句:
CREATE TABLE dept (
deptno NUMBER(2) PRIMARY KEY,
dname VARCHAR2(14),
loc VARCHAR2(13)
);
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
- 创建映射类
在com.example.dao包中创建DeptMapper.java类,定义查询dept表的方法:
public interface DeptMapper {
List<Dept> findAll();
}
- 创建映射文件
在com.example.dao包中创建DeptMapper.xml文件,编写查询dept表的SQL语句:
<?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.example.dao.DeptMapper">
<select id="findAll" resultType="com.example.entity.Dept">
SELECT * FROM dept
</select>
</mapper>
- 创建实体类
在com.example.entity包中创建Dept.java类,定义对应dept表的实体类:
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private Integer deptno;
private String dname;
private String loc;
}
- 编写测试代码
在com.example包中创建TestDeptMapper.java类,编写测试代码,如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring.xml"})
public class TestDeptMapper {
@Autowired
private DeptMapper deptMapper;
@Test
public void testFindAll() {
List<Dept> list = deptMapper.findAll();
System.out.println(list);
}
}
- 运行测试代码
运行TestDeptMapper.java类中的测试方法,可以看到查询结果输出到控制台。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis集成到spring的方式详解 - Python技术站