mybatis学习笔记(day4)
mybatis学习(day4)输入映射通过parameterType指定输入参数的类型,类型可以是 简单类型 hashmap pojo的包装类型 昨天已经解释过parameterType是什么了例如:[code] delete from student where id=#{studentId}[/code] 中的 parameterType 是来指定字段类型的 传递pojo的包装对象 定义包装类型pojo[code] package com.iot.mybatis.po;public class UserQueryVo { //在这里包装所需要的查询条件 //用户查询条件 private UserCustom userCustom; public UserCustom getUserCustom() { return userCustom; } public void setUserCustom(UserCustom userCustom) { ...
mybatis学习笔记(day3)
mybatis学习(day3)SqlMapConfig配置文件SqlMapConfig.xml中配置的内容和顺序如下 properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境集合属性对象) environment(环境子属性对象) transactionManager(事务管理) dataSource(数据源) mappers(映射器) (注:粗体是重点,斜体不常用) properties(属性)将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。 将数据库连接参数只配置在db.properties中。原因:方便对参数进行统一管理,其它xml可以引用该db.properties 。[code] jdbc.driver=com....
mybatis学习笔记(day2)
mybatis学习day2SqlSession位于sqlsessionfactory中 是 会话工厂的一部分 我们可以创建一个seesion来进行提交、回滚操作。 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessionFactoryBuilder。在需要创建SqlSessionFactory时候,只需要new一次SqlSessionFactoryBuilder即可。 SqlSessionFactory 通过SqlSessionFactory创建SqlSession,使用单例模式管理sqlSessionFactory(工厂一旦创建,使用一个实例)。将来mybatis和spring整合后,使用单例模式管理sqlSessionFactory。 SqlSession SqlSession是一个面向用户(程序员)的接口。SqlSession中提供了很多操作数据库的方法:如:...
mybatis学习笔记(day1)
mybatis学习笔记(day1)为啥不用JDBC?首先我们知道jdbc的步骤是: 加载数据库驱动 创建并获取数据库链接 创建jdbc statement对象 设置sql语句 设置sql语句中的参数(使用preparedStatement) 通过statement执行sql并获取结果 对sql执行结果进行解析处理 释放资源(resultSet、preparedstatement、connection) 我们可以看出,我们频繁的对数据库进行连接和关闭操作(当我们打开datagrip的时候,也要等一下数据库才出来),这很不效率。 设想:使用数据库连接池管理数据库连接 什么是数据库连接池? 数据库连接池是一个存储已经建立的数据库连接并使其可以重复使用的技术,可以减少程序每次建立数据库连接所花费的时间。 使用数据库连接池可以将已经建立的连接保存在连接池中,当有新的数据请求到来时,可以从连接池中获取已创建的空闲连接来使用,从而避免了频繁创建和释放数据库连接的操作,提高了系统的性能,减少了系统的开销。 将sql直接编入java语言中,其实非常不安全而且给维护造成很大影响。 设想:将sql...
哲学家就餐问题
哲学家就餐问题[code] import java.util.concurrent.Semaphore;/** * Todo: 哲学家就餐问题 * @Author Wislist */class Philosopher implements Runnable { private int id; private Semaphore[] forks; public Philosopher(int id, Semaphore[] forks) { this.id = id; this.forks = forks; } @Override public void run() { try { while (true) { // 哲学家思考 System.out.println(“Philosopher “ + id + “ is thinking.”); ...
进程 线程 多线程与多核 线程的生命周期 协程
进程 线程 多线程与多核 线程的生命周期 协程进程 是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。 进程是任务调度的最小单位,每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离。 线程 是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。 如上图,在任务管理器的进程一栏里,有道词典和有道云笔记就是进程,而在进程下又有着多个执行不同任务的线程。 进程与线程的区别前面讲了进程与线程,但可能你还觉得迷糊,感觉他们很类似。的确,进程与线程有着千丝万缕的关系,下面就让我们一起来理一理: 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位; 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线; 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见; 调度和切换:线程上下文切换比进程上下文切换要快得多。 比较让人在意的一点是:...
SQL语句
SQL语句基础0.1 连接数据库 0.2 创建数据库、添加引擎、设置编码格式注意:每个数据库版本可能所支持的引擎有所不同[code] create database if not EXISTS db_studydefault character set utf8default collate utf8_general_ci;[/code] 0.3 创建数据表[code] USING database(数据库名)CREATE TABLE –数据表名–( 学号 CHAR(4) PRIMARY KEY , 姓名 varchar(20) NOT NULL , 性别 varchar(5) DEFAULT ‘男’ CHECK ( 性别=’男’ || 性别=’女’ ), 出生日期 date not null , 专业 varchar(20) not null , 院系 varchar(20) not null , 联系电话 text)[/code] 一、查询数据1.1 基本查询要查询数据库表的数据[code...
MySQL忘记密码怎么去修改
第一步:关闭Mysql服务首先先停止mysql服务。可通过net stop mysql或者任务管理器中关闭。 第二步:跳过Mysql密码验证进入命令提示符(管理员登陆)操作,进入mysql目录中bin文件夹下,mysql8.0与其他版本不同的地方在于无法直接使用mysqld –skip-grant-tables来跳过密码登录。在这我们使用mysqld -console --skip-grant-tables --shared-memory来跳过权限验证。 第三步:无密码方式进入Mysql在上述步骤之后,再打开一个管理员模式运行的cmd.exe 进入mysql下的bin目录后,直接登录mysql 不需要通过net start mysql打开mysql服务 在命令行中输入以下代码[code] d:cd D:\mysql-8.0.19-winx64\bin(此处输入自己电脑上的安装目录)mysql -u root -p[/code] 此时会显示让你输入密码,直接回车,就可以成功连接Mysql。 第四步:将登陆密码设置为空输入代码,将密码设置为空(此时还不能直接修改密码,...
会话管理
会话管理HTTP是无状态协议 所以对话只在POST和GET中实现换句话说就是 在浏览器里走个过场 啥也没留下 Cookie会话的数据会保存在浏览器客户端 例如:显示 XXX用户上次登录的时间 核心api Cookie原理1)服务器创建cookie对象,把会话数据存储到cookie对象中。[code] Cookie cookie = new Cookie(“username”,”lsieun”);[/code] 2) 服务器发送cookie信息到浏览器[code] response.addCookie(cookie);[/code] 举例: Set-Cookie: username=lsieun (隐藏发送了一个Set-Cookie名称的响应头) 3)浏览器得到服务器发送的cookie,然后保存在浏览器端。 4)浏览器在下次访问服务器时,会带着cookie信息 举例: Cookie: username=lsieun (隐藏带着一个叫Cookie名称的请求头) 5)服务器接收到浏览器带来的cookie信息[code] ...
hello world
Hello World!
