JDBC
Java DataBase Connection:是java语言中唯一一个能够操作数据库的技术。
Java中一些约定俗成的东西,约定>配置>编码
Java类名: DataBase (大驼峰)
Java变量、属性、方法: userList(小驼峰)
顶层包(src下的第一层包): 网站后缀.公司名.项目名
Java本身由于扩展性的考虑,没有对任何数据库的操作做出具体实现。真正实现具体数据库操作的数据 库厂商提供的jar包类库。
一个简单的jdbc模型
package com.icss.jdbc; import com.mysql.jdbc.Driver; import java.sql.*; //通过JDBC 链接 MYSQL数据库 public class TestJDBC01 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1.注册驱动:通知JDBC当前使用的是哪个具体数据库的实现 Class.forName("com.mysql.jdbc.Driver");//5.x //Class.forName("com.mysql.cj.jdbc.Driver");//8.x //2.创建连接对象 String url = "jdbc:mysql://localhost:3306/myhr";//5.x // url = "jdbc:mysql://localhost:3306/myhr?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT";//8.x //"jdbc:mysql://localhost:3306/myhr?serverTimezone=GMT"这个好使 String user = "root"; String password = "root"; Connection conn = DriverManager.getConnection(url, user, password); //3.创建语句对象 Statement stmt = conn.createStatement(); //执行sql(查询/增删改) //4.ResultSet是查询结果的一个游标指针 ResultSet resultSet = stmt.executeQuery("select * from bank"); //5.遍历结果集 while(resultSet.next()){ int id = resultSet.getInt("id");//通过列名查询列值 int balance = resultSet.getInt(2);//通过列索引(第几列)查询列值 Bank bank = new Bank(id , balance); } //6.关闭链接 conn.close(); } }
防SQL注入(用问号占位)
//3.创建预编译语句对象(防SQL注入) String sql = "DELETE FROM DEPT WHERE DEPT_ID = ?"; PreparedStatement pstmt = conn.prepareStatement(sql);
Mybatis
Mybatis是目前占有率最高的ORM框架之一,主要用来编写数据访问层(dao层), 代替了JDBC, 简化了数 据访问操作,其他常用ORM框架还有Hibernate和JPA。
ORM思想(映射类,pojo类)
Mybatis早期叫做Ibatis,常用的版本是3.x系列
导包,创建依赖。
创建resources静态资源包
Mybatis核心配置文件 Mybatis的核心配置文件 名称任意、位置任意,一般情况下我们会将配置文件放到类路径下,并且名字 叫做mybatis-config.xml
<?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"> <configuration> <!-- 引用外部配置文件路径 --> <!--<properties resource="db_config.properties"></properties>--> <!-- 实体类的别名 --> <typeAliases> <typeAlias type="com.icss.mybatis.dept.pojo.Dept" alias="Dept"/> </typeAliases> <!-- 配置数据库连接 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/myhr?serverTimezone=GMT" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!--映射文件路径 --> <mappers> <mapper resource="com/icss/mybatis/dept/mapper/DeptMapper.xml" /> </mappers> </configuration>
先配置generator.xml 文件指定操作哪个表,pojo类,Mapper接口,Mapper.xml
反向生成工具
双击generator.bat文件后src文件夹下生成一个com文件
先读核心配置文件,知道有哪些Mapper映射文件,映射文件映射哪些接口,接口中有哪些方法,方法怎么重写,Mapper映射文件中有对应的标签
在 Mapper.xml 里写sql语句,dao层Mapper里有与其对应的方法
动态代理