MyBatis系列-入门篇
@toc
一:故事背景
在项目里已经应用了很久的MyBatis,但是没有系统的总结过MyBatis的相关知识。于是在一个寻常的下午,我决定,出一个系列的MyBatis知识博客。该系列博客主要分为分为以下四部分,每部分文章数量将会根据知识点的数量进行不同划分。
- MyBatis入门
- MyBatis配置
- MyBatisXML映射器
- 动态SQL
本系列文章预计在三周内更新完成,有兴趣的朋友可以持续关注。
二:MyBatis 简介
2.1什么是MyBatis
- MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
- MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
- MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2.1 MyBatis有什么好处
既然要学习这个框架,就一定要知道这个框架的好处,它能给我们带来什么!
- 简化数据库编程:MyBatis 通过提供简单的 API 和 SQL 映射文件,可以大大简化数据库编程。
- 提高数据库性能:MyBatis支持使用缓存和预编译语句等技术来提高数据库性能。
- 可以灵活地使用 SQL:MyBatis 可以直接使用 SQL语句,因此可以更灵活地处理复杂的查询需求。
- 易于集成:MyBatis 可以与 Spring、Spring Boot、Spring MVC等常见的 Java 框架集成,使得开发更加便捷。
- 易于维护:MyBatis提供了完善的日志和错误处理机制,方便开发人员进行调试和维护。同时,MyBatis 的 SQL
映射文件可以被独立出来,使得维护和修改更加方便。
三:MyBatis 入门
上文已经讲述了什么是MyBatis,并且讲述了MyBatis的优势,接下来就让我们分别以springBoot项目和普通maven项目为例,来一起配置我们的项目,用上这个框架吧。
3.1使用SpringBoot集成MyBatis
3.1.1 添加依赖
在 pom.xml 文件中添加 MyBatis 对应的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot-starter.version}</version>
</dependency>
3.1.2 配置数据源
在 application.properties 或 application.yml 文件中配置数据源相关的信息。
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
3.1.3 配置MyBatis
在 application.properties 或 application.yml 文件中添加 MyBatis 相关的配置项。
mybatis.mapper-locations=classpath:mapper/*.xml
这里配置的是对应的映射
3.1.4 创建Mapper接口和SQL映射文件
在 src/main/resources/mapper 目录下创建 Mapper 接口和 SQL 映射文件。例如:
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(Long id);
}
编写对应的XML文件,用来执行sql语句
<mapper namespace="com.example.mapper.UserMapper">
<select id="findById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
3.1.5 注入Mapper接口
在需要使用Mapper的地方进行注入即可使用
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findById(Long id) {
return userMapper.findById(id);
}
}
3.2 普通maven项目集成
3.2.1 添加依赖
添加依赖
在 pom.xml 文件中添加 MyBatis 和 JDBC 驱动程序的依赖。这里以 MySQL 数据库为例:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
3.2.2 配置数据源
在代码中配置数据源相关的信息,例如使用 DriverManager 类获取数据库连接。这里假设使用 MySQL 数据库。
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "root";
Connection connection = null;
try {
Class.forName(driver);
connection = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
3.2.3 配置 MyBatis
创建 MyBatis 的 SqlSessionFactory 对象,将其配置信息和数据源传递给它。
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
对应的 mybatis-config.xml 文件
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
3.2.4 创建 Mapper 接口和 SQL 映射文件
在 src/main/resources/com/example/mapper 目录下创建 Mapper 接口和 SQL 映射文件。例如:
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(Long id);
}
SQL 映射文件
<mapper namespace="com.example.mapper.UserMapper">
<select id="findById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
3.2.5 注入 Mapper 接口
在需要使用 Mapper 接口的地方注入它。可以使用 MyBatis 提供的 MapperFactoryBean 类来创建 Mapper 接口的实例。
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
// 配置数据源
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, "development");
return sqlSessionFactory;
}
@Bean
public MapperFactoryBean<UserMapper> userMapper() throws Exception {
MapperFactoryBean<UserMapper> factoryBean = new MapperFactoryBean<>(UserMapper.class); f
actoryBean.setSqlSessionFactory(sqlSessionFactory());
return factoryBean;
}
}
3.3.6 具体使用
在使用 Mapper 接口的地方注入它并使用即可。例如:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User findById(Long id) {
return userMapper.findById(id);
}
}
四:总结&升华
上文给出了如何使用普通的maven项目或者使用Springboot项目来进行MyBatis的使用。大家可以先按照上文所述,准备好对应的例子。以便之后的学习。
- 点赞
- 收藏
- 关注作者
评论(0)