Mybatis实现向数据库的实现细节详解-----Mybatis框架

ゝ一世哀愁。 2024-03-24 19:57 96阅读 0赞
  1. XML是一个配置文件
  2. mybatis-config.xml是核心配置文件,主要配置数据库的信息(仅一个)
  3. xxxMapper.xmlsql语句的配置文件,一个数据表一个
  4. Resource出现时,多数是从类的根路径下开始加载的
  5. 自己传递流给jvm就会导致可移植性变差了,因为在Windows系统中,盘符区分可以设置,但是在maclinux等操作系统中,没有盘符,就得改代码
  6. 程序不够健壮,违背了OCP原则
  7. 所以我们用ResourcegetResourceAsStream方式加载资源
  8. 所以我们验证了,Mybatis的核心配置文件不一定是mybatis-config.xml,也可以是其他名字
  9. mybatis核心配置文件存放的路径,也不一定是在类的根路径下,可以是其他位置
  10. 但是为了项目的移植性和健壮性,我们最好还是要放在类路径下
  11. ClassLoader.getSystemClassLoader.getResourceAsStream()方法
  12. 类加载器获取系统类加载器然后在类的根路径下获取了这个文件
  13. ResourcegetResourceAsStream方式底层的源代码实际就是对上面的方法的封装为一个静态工具类
  14. CarMapper.xml的文件名字和位置不是固定的
  15. 他也是通过xml的配置Mapper信息中配置的路径,从根路径中加载

XML是一个配置文件
mybatis-config.xml是核心配置文件,主要配置数据库的信息(仅一个)
xxxMapper.xml是sql语句的配置文件,一个数据表一个
Resource出现时,多数是从类的根路径下开始加载的
自己传递流给jvm就会导致可移植性变差了,因为在Windows系统中,盘符区分可以设置,但是在mac和linux等操作系统中,没有盘符,就得改代码
程序不够健壮,违背了OCP原则
所以我们用Resource的getResourceAsStream方式加载资源
所以我们验证了,Mybatis的核心配置文件不一定是mybatis-config.xml,也可以是其他名字
mybatis核心配置文件存放的路径,也不一定是在类的根路径下,可以是其他位置
但是为了项目的移植性和健壮性,我们最好还是要放在类路径下
ClassLoader.getSystemClassLoader.getResourceAsStream()方法
类加载器获取系统类加载器然后在类的根路径下获取了这个文件
Resource的getResourceAsStream方式底层的源代码实际就是对上面的方法的封装为一个静态工具类
CarMapper.xml的文件名字和位置不是固定的
他也是通过xml的配置Mapper信息中配置的路径,从根路径中加载

  1. CREATE DATABASE powernode;
  2. USE powernode;
  3. CREATE TABLE t_car(id BIGINT PRIMARY KEY AUTO_INCREMENT,car_num VARCHAR(255),
  4. brand VARCHAR(255),guide_price DECIMAL,produce_time CHAR(10),car_type CHAR(10))
  5. INSERT INTO t_car(id,car_num,brand,guide_price,produce_time,car_type)
  6. VALUES(NULL,'1001','宝马',30.0,'2000-10-11','燃油车')
  7. INSERT INTO t_car(id,car_num,brand,guide_price,produce_time,car_type)
  8. VALUES(NULL,'1002','奔驰',30.0,'2000-10-11','新能源')
  9. SELECT * FROM t_car;

CREATE DATABASE powernode;
USE powernode;
CREATE TABLE t_car(id BIGINT PRIMARY KEY AUTO_INCREMENT,car_num VARCHAR(255),
brand VARCHAR(255),guide_price DECIMAL,produce_time CHAR(10),car_type CHAR(10))
INSERT INTO t_car(id,car_num,brand,guide_price,produce_time,car_type)
VALUES(NULL,’1001’,’宝马’,30.0,’2000-10-11’,’燃油车’)
INSERT INTO t_car(id,car_num,brand,guide_price,produce_time,car_type)
VALUES(NULL,’1002’,’奔驰’,30.0,’2000-10-11’,’新能源’)
SELECT * FROM t_car;

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <environments default="development">
  7. <environment id="development">
  8. <transactionManager type="JDBC" />
  9. <dataSource type="POOLED">
  10. <property name="driver" value="com.mysql.cj.jdbc.Driver" />
  11. <property name="url" value="jdbc:mysql://localhost:13306/powernode" />
  12. <property name="username" value="root" />
  13. <property name="password" value="abc123" />
  14. </dataSource>
  15. </environment>
  16. </environments>
  17. <mappers>
  18. <!-- 指定xml文件的路径,自动从根路径下找资源-->
  19. <mapper resource="CarMapper.xml"></mapper>
  20. <!-- url属性,是从绝对路径下加载资源的,语法格式是file:///加绝对路径-->
  21. <!-- <mapper resource="CarMapper.xml" url="file:///d:/CarMapper.xml"></mapper>-->
  22. </mappers>
  23. </configuration>

<?xml version=”1.0” encoding=”UTF-8” ?>
<!DOCTYPE configuration
PUBLIC “-//mybatis.org//DTD Config 3.0//EN”
“http://mybatis.org/dtd/mybatis-3-config.dtd">



















发表评论

表情:
评论列表 (有 0 条评论,96人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis 框架详解

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程、高级映射和事务等功能,是 Java Web 开发中最受欢迎的 ORM 框架之一。MyBatis 的特点是