第四章 JDBC、MyBatis

文章目录

  • 第四章 JDBC、MyBatis
  • 一、JDBC
    • 1.介绍
    • 2.架构
    • 3.常用接口
    • 4.操作流程
    • 5.模拟登录功能
  • 一、MyBatis
    • 1.导入 pom.xml
    • 2.配置 mybatis-config.xml
    • 3.写 pojo
    • 4.写 UserMapper.xml
    • 5.在配置文件中引入 UserMapper.xml
    • 5.Test

一、JDBC

1.介绍

JDBC(Java Data Base Connectivity),官方解释它是Java编程语言和广泛的数据库之间独立于数据库的连接标准的 Java API,根本上说 JDBC 是一种规范,它提供的接口,一套完整的,允许便捷式访问底层数据库。可以用 JAVA 来写不同类型的可执行文件:JAVA 应用程序、JAVA Applets、Java Servlet、JSP 等,不同的可执行文件都能通过 JDBC 访问数据库,又兼备存储的优势。简单说它就是 JAVA 与数据库的连接的桥梁或者插件,用 JAVA 代码就能操作数据库的增删改查、存储过程、事务等

2.架构

分为双层架构和三层架构

双层架构

  • 作用:此架构中,Java Applet 或应用直接访问数据源
  • 条件:要求 Driver 能与访问的数据库交互
  • 机制:用户命令传给数据库或其他数据源,随之结果被返回
  • 部署:数据源可以在另一台机器上,用户通过网络连接,称为 C/S 配置(可以是内联网或互联网)

三层架构

次架构特殊之处在于引入了中间层服务
流程:命令和结构都会经过中间层
吸引:可以增加企业数据的访问控制,以及多种类型的更新;另外,也可简化应用的部署,并在多数情况下有性能优势
历史趋势:以往,因性能问题,中间层都用 C 或 C++ 编写,随着优化编译器(将 Java 字节码转为高效的特定机器码)和技术的发展,如 EJB,Java 开始用于中间层的开发,这也让 Java 的优势凸显出来,使用 Java 作为服务器代码语言,JDBC 随之被重视

3.常用接口

  • JAVA API:提供对JDBC的管理链接
  • JAVA Driver API:支持JDBC管理到驱动器连接
  • DriverManager:这个类管理数据库驱动程序的列表,查看加载的驱动是否符合JAVA Driver API的规范
  • Connection:与数据库中的所有的通信是通过唯一的连接对象
  • Statement:把创建的SQL对象,转而存储到数据库当中
  • ResultSet:它是一个迭代器,用于检索查询数据

4.操作流程

package com.sisyphus.test;import java.sql.*;/**测试 JDBC 的入门案例* @Description: $* @Param: $* @return: $* @Author: Sisyphus* @Date: 7/30$*/
public class Test1 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册驱动 DriverClass.forName("com.mysql.cj.jdbc.Driver");//2.获取连接(user,password,port,databasename)String url = "jdbc:mysql://localhost:3306/demo";Connection c = DriverManager.getConnection(url, "root", "root");//3.获取传输器Statement s = c.createStatement();//4.执行 SQLResultSet r = s.executeQuery("select * from demo");//5.处理结果集while(r.next()){    //next() 判断有没有数据,有数据就返回 trueString a = r.getString(1);//获取第一列的数据String b = r.getString("id");//获取指定字段名的值System.out.println(a+","+b);}//6.释放资源r.close();//结果集s.close();//传输器c.close();//连接}
}

5.模拟登录功能

package com.sisyphus.test;import java.sql.*;
import java.util.Scanner;/**测试 JDBC 的入门案例* @Description: $* @Param: $* @return: $* @Author: Sisyphus* @Date: 7/30$*/
public class Test1 {public static void main(String[] args) throws ClassNotFoundException, SQLException {String url = "jdbc:mysql://localhost:3306/cgb2106?characterEncoding=utf8&serverTimezone=Asia/Shanghai";String user = "root";String password = "123456";System.out.println("请输入用户名:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();System.out.println("请输入密码:");String pwd = scanner.nextLine();Connention(url,user,password,name,pwd);}private static void Connention(String url,String user,String password,String name, String pwd) throws ClassNotFoundException, SQLException {//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.获取链接Connection connection = DriverManager.getConnection(url, user, password);//3.获取传输器Statement statement = connection.createStatement();//4.执行 SQLString sql = "select id from user where name = ? and password = ?";PreparedStatement ps = connection.prepareStatement(sql);ps.setString(1,name);ps.setString(2,pwd);ResultSet resultSet = ps.executeQuery();//5.处理结果集if (resultSet.next()){System.out.println("登录成功!");}else{System.out.println("用户名或密码错误!");}//6.关闭资源resultSet.close();ps.close();connection.close();}
}

一、MyBatis

整体结构

1.导入 pom.xml

2.配置 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--    指定使用哪个环境(数据库)--><environments default="test"><environment id="test">
<!--            使用的事务管理器--><transactionManager type="JDBC"/>
<!--            配置数据源--><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=utf8&amp;serverTimezone=Asia/Shanghai" /><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments>
</configuration>

3.写 pojo

package com.sisyphus.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;/*** @Description: $* @Param: $* @return: $* @Author: Sisyphus* @Date: $*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors
public class User {private Integer id;private String name;private String addr;private Integer age;
}

4.写 UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="userMapper"><select id="get" resultType="com.sisyphus.pojo.User">select * from user where id = 1</select>
</mapper>

5.在配置文件中引入 UserMapper.xml

5.Test

package com.sisyphus.test;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;import java.io.IOException;
import java.io.InputStream;/*** @Description: $* @Param: $* @return: $* @Author: Sisyphus* @Date: $*/
public class Test1 {@Testpublic void get() throws IOException {//1.创建 SqlSessionFactory 对象,线程非安全,用来产生 SqlSession//2.创建 SqlSession,用来执行 sql//3.定位 SQL:namespace 的值 + id 的值//4.打印结果InputStream in = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);SqlSession session = factory.openSession();Object o = session.selectOne("userMapper.get");System.out.println(o);}
}

【数据库】第四章 JDBC、MyBatis相关推荐

  1. JAVA数据库第四章上机3_Java第二至第四章上机练习题

    Java第二章~第四章上机题 以下页码见第8版教材 1.完成P53页2.14题 2.完成P53页2.15题,请使用循环编程.输入分别为半年,一年. 3.同上题描述进行编程,问要存多少个月,获得的利息大 ...

  2. 关系型数据库第四章笔记---关系数据理论

    文章目录 关系模式设计中的问题 关系规范化 数据依赖 函数依赖 函数依赖的定义 定义 满足依赖的关系 模式上成立的依赖 平凡函数依赖与非平凡函数依赖 完全函数依赖与部分函数依赖 传递函数依赖与直接函数 ...

  3. 数据库下午怎么插入_2020/3/25 下午 数据库第四章 自连接(示例代码)

    自连接 查询与"数据结构"学分相同的课程的课程名和学分 SELECT C2.Cname,C1.Credit FROM Course C1 JOIN Course C2 ON C1. ...

  4. 【3/25-12】数据库第四章课后题

    6.对下列两个关系模式: 学生(学号,姓名,年龄,性别,家庭住址,班级号) 班级(班级号,班级名,班主任,班长) 使用GRANT语句完成下列授权功能: 先把关系列出来 Student(Sno,Snam ...

  5. 基于.Net Core Web MVC的图书查询系统——第四章,添加模型并使用EF Core生成基架自动生成控制器和视图

    基于.Net Core Web MVC的图书查询系统 第一章,.Net Core Web MVC配置身份验证和注册登录功能并修改默认页面 第二章,.Net Core Web MVC配置邮件发送服务 第 ...

  6. 19年8月 字母哥 第四章 常用web开发数据库框架 不要用公司网络加载不出来 用热点!!!

    第四章 常用web开发数据库框架 4.1.整合Spring JDBC操作数据 4.2 Spring JDBC多数据源的实现 4.3.Spring JDBC JTA实现分布式事务 4.4.ORM主流框架 ...

  7. jdbc代码_凯哥带你从零学大数据系列之数据库篇---第三章:JDBC基础

    温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣. 系列文章第一篇是拥抱大数据:凯哥带你 ...

  8. mybatis从入门到精通(刘增辉著)-读书笔记第四章

    MyBatis动态sql MyBatis 的强大特性之 便是它的动态 SQL .使用过 JDB 或其他类似框架的人都会知道,根据不同条件拼接 SQL 语句时不仅不能忘了必要的空格,还要注意省略掉列名列 ...

  9. 【.NET Core项目实战-统一认证平台】第四章 网关篇-数据库存储配置(2)

    [.NET Core项目实战-统一认证平台]第四章 网关篇-数据库存储配置(2) 原文:[.NET Core项目实战-统一认证平台]第四章 网关篇-数据库存储配置(2) [.NET Core项目实战- ...

最新文章

  1. linux 内网共享文件夹_在Linux下访问Windows共享文件夹
  2. LeetCode 2. Add Two Numbers--C++,Python解法--面试算法题
  3. 伪造服务钓鱼工具Ghost Phisher
  4. bobo老师机器学习笔记1.1 - 什么是机器学习
  5. Android 中 RegistrantList消息处理机制 以android 5.0 MT为例
  6. scp传输文件,自动填充密码
  7. stein法求gcd 学习笔记
  8. java svg 读取dom结构_SVG基础以及使用Javascript DOM操作SVG
  9. 使用@JsonIdentityInfo的Spring自定义序列化器
  10. sessionStorage什么时候失效
  11. github 创始人_GitHub联合创始人Scott Chacon的视频采访,探讨代码之外的未来
  12. wms仓库管理系统选型要注意哪几点?
  13. linux命令 选项,Linux常用命令及选项
  14. BZOJ4597 SHOI2016随机序列(线段树)
  15. [置顶] asp.net(c#)中相对路径(虚拟路径)和物理磁盘路径的转换
  16. Oracle Temp表空间切换
  17. window注册表详解
  18. Python 数据恢复实战 - 恢复U盘中的chk文件,以及误删的文件
  19. ZZULIOJ 1188: 选票统计(一)(结构体专题)
  20. JavaCV本地视频流通过帧图片添加文本进行字幕合成

热门文章

  1. php xingnengfenxi_php代码性能分析方法
  2. uniapp 子组件 props拿不到数据_谈一谈使用 webpack 开发时,Vue 组件之间的数据传递...
  3. C语言实验报告册-20163a,c语言实验报告册-20163a.doc
  4. 图像处理---《在图片上打印文字 FreeType库》
  5. LeetCode Assign Cookies
  6. Mac OS X 显示和隐藏文件
  7. 剩余大学时光里要做的事
  8. C++编程--函数与委托(2)
  9. asp.net缓存-SqlCacheDependency
  10. Asp2.0下Login.Aspx页面和VS2005登陆控件冲突问题!