MyBatis框架二Li.064

接口代理方式实现Dao层 接口代理方式-实现规则 传统方式实现Dao 层,我们既要写接口,还要与实现类。而MyBatis框架可以帮助我们省略编写 Dao 层接口实现类的步骤 程序员只需要编写接口,由MyBatis 框架根据接口的定义来创建该接口的动态代理对象。 实现规则 映射配置文件中的名称空间必须和 Dao 层接口的全类名相同。 映射配置文件中的增删改查标签的 id 属性必须和 Dao 层接口的方法名相同。 映射配置文件中的增删改查标签的 parameterType 属性必须和 Dao 层接口方法的参数相同。 映射配置文件中的增删改查标签的 resultType 属性必须和 Dao 层接口方法的返回值相同。 获取动态代理对象 SqlSession功能类中的getMapper()方法 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTA Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- mapper: 核心根标签 namespace属性: 名称空间 --> <mapper namespace="com.lizicai.mapper.StudentMapper"> <!-- select: 查询功能的标签 id属性: 唯一标识 resultType属性: 指定结果映射对象类型 parameterType属性: 指定参数映射对象类型 --> <select id="selectAll" resultType="student"> SELECT * FROM student </select> <select id="selectById" resultType="student" parameterType="int"> SELECT * FROM student WHERE id = #{id} </select> <insert id="insert" parameterType="student"> INSERT INTO student VALUES (#{id},#{name},#{age}) </insert> <update id="update" parameterType="student"> UPDATE student SET name=#{name},age=#{age} WHERE id=#{id} </update> <delete id="delete" parameterType="int"> DELETE FROM student WHERE id=#{id}; </delete> </mapper package com....

November 3, 2021 · 9 分钟 · Lizicai

MyBatis框架一Li.063

MyBatis 介绍 MyBatis 是一个优秀的基于Java 的特久层框架,它内部封装了JDBC,使开发者只需要关注SQL语句本身, 而不需要花费精力去处理加载驱动、创建连接、创建执行者等复杂的操作。 MyBatis通过xml 或注解的方式将要执行的各种Statement 配置起来,并通过Java对象和 Statement中 SQL 的动态参数进行映射生成最终要执行的SQL 语句。 最后MyBatis 框架执行完 SQL 并将结果映射为 Java 对象并返回。采用ORM 思想解决了实体和数据库映射的问题,对JDBC 进行了封装,屏蔽了 JDBC API 底层访问细节,使我们不用与JDBC API打交道,就可以 完成对数据库的持久化操作。 MyBatis 使用示例 导入mariadb-java-client-2.7.4.jar和mybatis-3.5.7.jar CREATE DATABASE db1; use db1; create table student( id int auto_increment primary key , NAME VARCHAR(20), age int ); INSERT INTO student VALUES (null,'张三',23),(null,'李四',24),(null,'王五',25); public class Student { private Integer id; private String name; private Integer age; ...略 } package com....

October 29, 2021 · 7 分钟 · Lizicai

JDBC数据库连接三Li.062

自定义JDBC框架 使用JDBC过程中有大量的重复代码, 核心功能仅仅执行一条SQL语句, 所以可以抽取一个JDBC模板类, 来封装一些方法(update query). 专门帮我们执行增删改查SQL语句. 将之前那些重复的操作, 都抽取到模板类中的方法里, 就能大简化使用步骤 源信息 DataeBaseMetaData: 数据库的源信息 java.sql.DataBaseMetaData 封装了整个数据库的综合信息 例如 String getDatabaseProductName(): 获取数据库产品的名称 例如int getDatabaseProductVersion: 获取数据库产品的版本号 ParameterMetaData: 参数源信息 java.sql.ParameterMetaData 封装的是预编译执行者对象中每个参数的类型和属性, 这个对象可以通过预编译执行者对象中的getParameterMetaData()方法来获取 int getParameterCount() 用于获取SQL语句中的参数个数 ResultSetMetaData: 结果集的源信息 java.sql.ResultSetMetaData: 封装的是结果集对象中列的类型和属性, 这个对象可以通过结果集对象中的getMetaData()方法来获取 int getColumnCount() 用于获取列的总数, String getColumnName(int i)用于获取列名 package com.test005; import com.lizicai.utils.DataSourceUtils; import javax.sql.DataSource; import java.io.IOException; import java.sql.*; public class JDBCTemplate { // 1. 定义参数变量(数据源, 连接对象, 执行者对象, 结果集对象 private DataSource dataSource; private Connection con; private PreparedStatement pst; private ResultSet rs; // 2....

October 27, 2021 · 5 分钟 · Lizicai

JDBC数据库连接二Li.061

数据库连接池 数据库连接池 数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现在的数据库连接,而不是再重新建立一个. 这项技术能明显提高对数据库操作的性能 DataSource接口概述 javax.sql.DataSource接口: 数据源(数据库连接池). Java官方提供的数据库连接池规范(接口) 如果想完成数据库连接池技术, 就必须实现DataSource接口 核心功能: 获取数据库连接对象: Connection getConnection() 自定义数据库连接池 定义一个类, 实现DataSource接口 定义一个容器, 用于保存多个Connection连接对象 定义静态代码块, 通过JDBC工具类获取10个连接保存到容器中 重写getConnection方法, 从容器中获取一个连接并返回 定义getSize方法, 用于获取窗口的大小并返回 package com.test001; import com.lizicai.utils.JDBCUtils; import javax.sql.DataSource; import java.io.PrintWriter; import java.sql.Connection; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.logging.Logger; public class MyDataSource implements DataSource { // 1. 准备窗口, 用于保存多个连接对象, 变成线程安全的 private static List<Connection> pool = Collections....

October 26, 2021 · 7 分钟 · Lizicai

JDBC数据库连接一Li.060

JDBC 的概念 JDBC的概念 JDBC(Java DataBase Connectivity Java数据库连接)是一种用于执行SQL语句的Java API, 可以为多种关系型数据库提供统一访问,它是由一组用Java语文编写的类和接口组成的 JDBC的本质 其实就是Java官方提供的一套规范(接口). 用于帮助开发人员快速实现不同关系型数据库的连接. JDBC 的快速入门程序 导入Jar包 注册驱动 获取数据库连接 获取执行者对象 执行SQL语句并返回结果 处理结果 释放资源 JDBC包下载 package com.lizicai.jdbc; import java.sql.*; public class JDBCDemo1 { public static void main(String[] args) throws ClassNotFoundException, SQLException { // 导入Jar包, 已导入 // 注册驱动, 也可以省略掉 Class.forName("org.mariadb.jdbc.Driver"); // 获取数据库连接 Connection connection = DriverManager.getConnection ("jdbc:mariadb://192.168.0.100:3306/db10", "root", "rootPassword"); // 获取执行者对象 Statement statement = connection....

October 24, 2021 · 7 分钟 · Lizicai

MySQL数据库二Li.059

视图 视图介绍 视图:是一种虛拟存在的数据表,这个虚拟表并不在数据库中实际存在。 作用:将一些较为复系的查询语句的结果,封装到-个虚拟表中,后期再有相同需求时,直接道询该虚拟表即可 # 准备数据 create database mydb5; use mydb5; create table country( id int primary key auto_increment, NAME varchar(30) ); insert into country values (null,'中国'),(null,'美国'),(null,'俄罗斯'); create table city( id int primary key auto_increment, NAME varchar(30), cid int, constraint cc_fk1 foreign key (cid) references country(id) ); insert into city values (null,'北京',1),(null,'上海',1),(null,'纽约',2),(null,"莫斯科",3); 视图的创建和查询 创建视图语法: create view 视图名称 [(列名列表)] as 查询语句; 查询视图语法: select * from 视图名称; ## 创建视图 create view city_country (city_id,city_name,country_name) as select c1....

October 20, 2021 · 11 分钟 · Lizicai

MySQL数据库一Li.058

数据库安装和设置UTF-8 数据库安装和设置UTF-8 SQL 介绍 SQL (Structured Query Language): 结构化查询语文. 其实就是定义了操作所有关系型数据库的一种规则 通用语法规则 SQL 语句可以单选或多行书写, 以分号结尾 可使用空格和缩进来增强语句的可读性 MySQL数据库的SQL语句不区分大小写, 关键字建议使用大写 单选注释: – 注释内容 多行注释 /* 注释内容 */ SQL 分类 DDL(Data Definition Language): 数据定义语文. 用来操作数据库,表,列等 DML(Data Manipulation Language): 数据操作语文. 用来对数据库中表的数据进行增删改. DQL(Data Query Language): 数据查询语言. 用来查询数据库表的记录(数据). DCL(Data Control Language): 数据控制语言. 用来定义数据库的访问权限和安全级别, 及创建用户. DDL 查询和创建数据库 # 查询所有数据库 show databases ; # 查询数据的创建的创建语句 show create database mysql; # 创建数据库 create database mydb; # 创建数据库(判断,如果不存在则创建) create database if not exists mydb2; # 创建数据库(指定字符集) create database mydb3 character set UTF8mb4; # 练习创建mydb4, 不存在则创建, 并指定UTF8字符 create database if not exists mydb4 character set UTF8mb4; DDL 修改 删除 使用数据库 # 修改数据库(修饰字符集) ALTER DATABASE mydb4 CHAR SET gbk; show create database mydb4; # 删除数据库 drop database mydb4; # 删除数据库(判断, 如果存在则删除) drop database if exists mydb4; # 使用数据库 use mydb3; # 查看当前使用的数据库 select DATABASE(); DDL 查询数据表 # 查询所有的数据表 use mysql; show tables ; # 查询表结构 desc user; # 查询表字符集 show table status from mysql like 'user'; DDL 创建数据表 格式 create table 表名( 列名 数据类型 约束, 列名 数据类型 约束, 列名 数据类型 约束 ); 数据类型 int: 整数类型 double: 小数类型 datetime: 日期类型....

October 14, 2021 · 13 分钟 · Lizicai

JavaWeb核心四Li.057

EL 表达式 EL (Expression Language): 表达式语言. 在JSP 2.0规范中加入的内容, 也是Servlet规范的一部分. 作用: 在JSP页面中获取数据. 让我们的JSP脱离java代码块和JSP表达式 <%--请求域中添加username数据--%> <% request.setAttribute("username","zhangsan"); %> <%--获取请求域的username 3种方式--%> <%--Java代码块--%> <% out.println(request.getAttribute("username")); %> <br/> <%--JSP表达式获取--%> <%= request.getAttribute("username")%> <br/> <%--EL表达式获取--%> ${username} EL 表达式获取数据类型 获取基本数据类型的数据 获取自定义对象类型的数据 获取数组类型的数据 获取List集合类型的数据 获取Map集合类型的数据 <%@ page import="com.lizicai.bean.Student" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.HashMap" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <% pageContext.setAttribute("num",10); %> 基本数据类型 ${num} <br/> <% Student stu = new Student("李明", 23); pageContext....

October 13, 2021 · 7 分钟 · Lizicai