下面我将为您提供一份详细的SpringBoot整合MyBatis的攻略,包含以下步骤和示例。
步骤
步骤一:配置数据源 DataSource
在 application.properties
或 application.yml
中配置数据源(例如 MySQL)的相关信息,如下所示:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydb
username: root
password: 123456
步骤二:添加 MyBatis 依赖
在 Maven 或 Gradle 中添加 MyBatis 的依赖,例如:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
步骤三:设置 MyBatis 配置信息
创建配置类 MyBatisConfig
,并注入数据源 DataSource
,配置如下所示:
@Configuration
@MapperScan(basePackages = "com.example.demo.mapper")
public class MyBatisConfig {
@Autowired
private DataSource dataSource;
@Bean
public SqlSessionFactoryBean sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
return sessionFactory;
}
@Bean
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
步骤四:创建实体类
创建与数据库表字段对应的实体类,注明表名和各列名。例如,对于数据库中的 user
表,可创建以下实体类:
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String username;
private String password;
private Date createTime;
private Date updateTime;
}
步骤五:创建 Mapper 接口
创建与数据库表对应的 Mapper 接口,并定义相关操作的方法。例如,对于数据库中的 user
表,可创建以下 Mapper 接口:
public interface UserMapper extends BaseMapper<User> {
// 自定义查询方法
List<User> selectByUsername(String username);
}
步骤六:运行测试
编写测试类,测试获取数据库中的数据。“测试类”可以是单元测试,也可以是主程序入口等程序中使用的“功能性测试”。
示例一:查询用户信息
实体类
先创建实体类 User
,如上所示。
Mapper 接口
创建 Mapper 接口 UserMapper
,如上所示。
XML 文件
创建 XML 文件 UserMapper.xml
,并编写相应的 SQL 语句,例如:
<mapper namespace="com.example.demo.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.demo.entity.User">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="selectByUsername" resultMap="BaseResultMap" parameterType="java.lang.String">
select *
from user
where username = #{username,jdbcType=VARCHAR}
</select>
</mapper>
测试类
编写测试类 UserMapperTest
,测试查询用户信息的方法:
@SpringBootTest
@RunWith(SpringRunner.class)
public class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
public void selectByUsernameTest() {
List<User> userList = userMapper.selectByUsername("alice");
Assert.assertNotNull(userList);
Assert.assertEquals(1, userList.size());
Assert.assertEquals("alice", userList.get(0).getUsername());
}
}
示例二:插入用户信息
实体类
先创建实体类 User
,如上所示。
Mapper 接口
创建 Mapper 接口 UserMapper
,如上所示。
XML 文件
创建 XML 文件 UserMapper.xml
,并编写相应的 SQL 语句。例如,插入用户信息的方法可编写如下 SQL 语句:
<insert id="insert" parameterType="com.example.demo.entity.User">
insert into user (username, password, create_time, update_time)
values (
#{username,jdbcType=VARCHAR},
#{password,jdbcType=VARCHAR},
#{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP}
)
</insert>
测试类
编写测试类 UserMapperTest
,测试插入用户信息的方法:
@SpringBootTest
@RunWith(SpringRunner.class)
public class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
@Transactional // 防止数据的插入产生影响,这里需要启用事务模式。
public void insertTest() {
User user = new User();
user.setUsername("bob");
user.setPassword("password");
user.setCreateTime(new Date());
user.setUpdateTime(new Date());
int result = userMapper.insert(user);
Assert.assertEquals(1, result); // 需要确保正好插入一条数据
}
}
到这里,示例就完成了。
以上是 SpringBoot 与 MyBatis 整合的实例及步骤的详细讲解,希望能够帮助您更好地理解 SpringBoot 和 MyBatis 的结合使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot项目整合mybatis的方法步骤与实例 - Python技术站