主页 > 其他  > 

0x04jdbc和mybatis

0x04jdbc和mybatis
JDBC 简介

JDBC:Java DataBase Connectivity,就是使用Java语言操作关系型数据库的一套API

jdbc的使用 public class JdbcTest { @Test public void testUpdate() throws ClassNotFoundException, SQLException { //1. 注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //2. 获取数据库连接 String url = "jdbc:mysql://localhost:3306/web01"; String username = "root"; String password = "1234"; Connection connection = DriverManager.getConnection(url, username, password); //3. 获取sql语句执行对象 Statement statement = connection.createStatement(); //4. 执行sql int i = statement.executeUpdate("update user set age = 25 where id = 1"); System.out.println("SQL语句执行完影响的记录数为" + i); //5. 释放资源 statement.close(); connection.close(); } }

jdbc执行查询语句

public class JdbcTest { @Test public void testSelect() throws ClassNotFoundException, SQLException { Class.forName("com.mysql.cj.jdbc.Driver"); //2. 获取数据库连接 String url = "jdbc:mysql://localhost:3306/web01"; String username = "root"; String password = "1234"; Connection connection = DriverManager.getConnection(url, username, password); //3. 获取sql语句执行对象 Statement statement = connection.createStatement(); //4. 执行sql ResultSet resultSet = statement.executeQuery("select * from user where username='daqiao'"); //解析查询到的语句 while (resultSet.next()) { User user = new User(resultSet.getInt("id") ,resultSet.getString("username") ,resultSet.getString("password") ,resultSet.getString("name") ,resultSet.getInt("age") ); System.out.println(user); } //5. 释放资源 statement.close(); connection.close(); } }

预编译的sql

安全:可以防止SQL注入

性能更高:主要是利用了缓存机制来提高性能

MyBatis 简介

MyBatis是一款持久层框架,用于简化JDBC的开发。

简化代码:

MyBatis几乎免除了所有JDBC代码以及设置参数和获取结果集的工作。

mybatis的辅助配置 配置sql提示

配置mybatis的日志输出 # 配置mybatis的日志输出 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl 数据库连接池

数据库连接池是一个容器,负责分配、管理数据库连接。

在没有数据库连接池的情况下执行一条sql语句的过程:

创建连接 --> 执行sql --> 关闭连接 --> 创建连接 --> 执行sql --> 关闭连接 --> ...

在有数据库连接池的情况下

从数据库连接池拿出一个连接 --> 执行sql --> 归还连接 --> 拿出连接 --> 执行SQL --> 归还连接

删除数据

XML映射配置

在Mybatis中,既可以通过注解配置SQL语句,也可以通过XML配置文件配置SQL语句,配置时有一些规则。

XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下**(同包同名)**XML映射文件的namespace属性为Mapper接口全限定名一致XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致

那么问题来了,有注解和XML映射这两种方式,我们到底用哪个?

这个就是一个见仁见智的问题,spring官方建议的是简单sql使用注解,而复杂sql则使用XML映射

XML映射文件辅助配置

对于上面xml映射配置的第一条规则,如果不放在同一包下,也想让xml可以找到对应的位置就需要在application.properties中进行如下配置

# 指定XML映射配置文件的位置 mybatis.mapper-locations=classpath:mapper/*.xml # 上面*.xml表示classpath下面的所有xml文件 SpringBoot项目配置文件

SpringBoot项目提供了多种属性配置方式**(properties、yaml、yml)**

properties使用key-value方法臃肿、层级结构不清晰

yaml|yml更加简洁、结构清晰

格式:

数值前边必须有空格,作为分隔符使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格缩进的空格数目不重要,只要相同层级的元素左侧对齐即可**#**表示注释

例子

properties文件

spring.application.name=mybatis spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.url=jdbc:mysql://localhost:3306/web01 spring.datasource.username=root spring.datasource.password=1234 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl mybatis.mapper-locations=classpath:mapper/*.xml

yaml/yml

spring: application: name: mybatis datasource: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://localhost:3306/web01 username: root password: 1234 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath:mapper/*.xml
标签:

0x04jdbc和mybatis由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“0x04jdbc和mybatis