目录
一、MyBatis概述
二、编写MyBatis入门程序
三、配置SQL提示
四、传统jdbc的劣势
一、MyBatis概述
MyBatis是一个基于Java的持久层框架,它内部封装了JDBC操作,使得开发人员可以更专注于SQL语句本身而非繁琐的JDBC操作细节。在MyBatis中,SQL语句可以被配置在XML文件中,或者通过注解方式进行。这种分离使得SQL语句更加模块化和可重用。MyBatis还支持动态SQL,允许开发者根据不同情况构建复杂的SQL语句,而无需编写大量的Java代码。
二、编写MyBatis入门程序
按照如下步骤创建一个springboot+mybatis工程:
我遇到了Failure to find org.springframework.boot:spring-boot-starter-parent:pom:3.3.1.RELEASE问题,
这通常是由于以下原因之一造成的:
- Maven仓库中没有找到所需的依赖项。(我查看我中央仓库没有问题)
- 依赖项的坐标不正确或版本号不匹配。
通过修改我的依赖坐标解决了问题:
随后我遇到新的问题:(Error:java: 无效的源发行版: 13)
引起上述问题的原因是因为JDK版本不对应,通过修改下述的地方解决了问题,我使用的jdk8。
到这里已经差不多创建成功了,但是去运行测试代码还是会出现一些小错误(Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
),但是请别紧张,这是因为没有指定'url'属性,也没有配置嵌入式数据源。
例如,如果你使用的是Spring Boot和MySQL数据库,你可以在application.properties
或application.yml
文件中添加以下配置:
spring.application.name=demo
#配置数据库的连接信息 - 四要素
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234
这里要更改为自己对象信息,我的仅供参考。
到这一步你离成功又近了一步,恭喜你!
创建了User实体类,它有如下属性,属性与数据库中的列名对象。
编写测试代码,打开创建代码生成的test类
添加如下代码:
@Autowired
private UserMapper userMapper;
@Test
public void testListUser(){
List<User> userList = userMapper.list();
userList.stream().forEach(user -> {
System.out.println(user);
});
}
结果如下:
如果结果出现你想查询的东西,恭喜你入门程序编写成功。
三、配置SQL提示
默认在mybatis中编写SQL语句是不可识别的,只是一个简单的字符串,不管你写成什么都不会报错,但是程序运行会报错。可以做如下配置:
选中SQL语句右击,按下述操作进行
操作完你会发现SQL语句变成其他颜色,你现在可以把SQL语句删除,然后看看有没提示。
现在还存在一些小小的问题
这意味着系统无法找到名为'user'的表,"No data sources are configured to run this SQL and provide advanced code assistance." 表示当前没有配置数据源来运行此SQL并提供高级代码辅助功能。
产生的原因:idea和数据库没有建立连接,不识别表信息
解决方式:在idea中配置MySQL数据库连接
遇到Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.错误
mysql默认时区与当前的时区冲突。解决方法:
由于本机安装的mysql版本是5.7的,那么IDEA要连接mysql也应该匹配相应的驱动版本,把Driver改成MySQL for 5.1就可以了
进过上述配置在程序编写过程中就可以识别SQL语句的错误了。
四、传统jdbc的劣势
- 频繁创建释放连接:在传统的JDBC操作中,每次数据交互都需要创建和关闭数据库连接,这不仅消耗时间,还可能导致系统资源的浪费。
- SQL语句硬编码:传统JDBC常常需要在Java代码中直接编写SQL语句,这使得任何SQL的修改都需要重新编译和发布代码,不利于维护。
- 参数设置困难:使用PreparedStatement时,参数的传递需要硬编码,对应不同条件需要不断修改代码,进一步降低了灵活性和可维护性。
- 重复代码多:结果集的处理通常包含大量重复代码,且需要手动将数据记录映射到Java对象,这一过程不仅繁琐,也容易出错。
综上所述,传统JDBC虽然在底层操作和跨平台性上有其优势,但在现代开发中存在不少劣势,如资源管理不当、代码硬编码、面向对象编程支持不足等。这些缺点在快节奏、高维护性要求的开发背景下尤为明显。因此,许多现代框架如MyBatis等应运而生,旨在解决这些传统问题,提升开发效率和系统性能。