MyBatis第一天课上笔记

[今日课程大纲]
高级软件介绍(部分)
MySql 数据库建库建表语句强调
命名规范强调
基于MVC 开发模式完成单表查询和新增
Eclipse 中项目默认发布路径
高级课程大纲介绍
框架是什么
MyBatis 简介
MyBatis 搭建流程
数据库连接池和JNDI 复习
搭建流程详解( 全局配置文件,resultType 原理及
AutoMapping 等)
MyBatis 三种查询方式
[知识点详解]
一.高级软件介绍
1. JDK 7
2. Eclipse mars2
3. MySql
4. Navicat
二.数据库SQL 命令
1 创建数据库并指定编码
Create database 数据库名default character set utf8
2.创建表
Create table 表名(
列名类型约束auto_increment comment ‘备注’,
);
三.Eclipse 使用
1. 创建项目
1.1 选择target runtime,否则出现新建jsp 报错
1.2 如果忘记选择,右键项目--> build path --> configure path -->选
项卡library --> 第四个add library --> server runtime
2. Eclipse 默认会自己下载所需tomcat 最简单结构.
三.命名规范
1.项目名:没有要求,不起中文
2.包:公司域名倒写com.bjsxt
3.数据访问层:dao, persist, mapper
4.实体:entity, model, bean,javabean, pojo
5.业务逻辑: service ,biz
6.控制器: controller, servlet,action,web
7.过滤器: filter
8.异常: exception
9.监听器:listener
10.注释:
10.1 类上和方法上使用文档注释/** */
10.2 在方法里面使用/* */ 或//
11.类: 大驼峰
12.方法,属性:小驼峰
四.MVC 开发模式
1. M: Model 模型,实体类和业务和dao
2. V: view 视图. JSP
3. C:Controller 控制器,servlet
3.1 作用:视图和逻辑分离
4. MVC 适用场景:大型项目开发.
5. 图示例
5.1 先设计数据库
5.2 先写实体类
5.3 持久层
5.4 业务逻辑
5.5 控制器
5.6 视图
DB
Service:业务逻辑
五.高级课程大纲介绍
1. 正课时间46 天(9 周零1 天)
2. 高级分为3 部分:
2.1 第一部分:SSM 框架.11 天+5 天项目
2.1.1 MyBatis: 数据访问层框架
2.1.2 Spring 框架:IoC,AOP
2.1.3 SpringMVC 框架:对Servlet 封装
2.2 第二部分:分布式项目开发(Ego) 6 天+14 天+5 天
DAO:数据库访问对象.
控制器
视图
实体
类, 封
装数
据.
2.3 第三部分:SSH 框架5 天
六.框架是什么?
1. 框架:软件的半成品.未解决问题制定的一套约束,在提供功能基础
上进行扩充.
2. 框架中一些不能被封装的代码(变量),需要使用框架者新建一个
xml 文件,在文件中添加变量内容.
2.1 需要建立特定位置和特定名称的配置文件.
2.2 需要使用xml 解析技术和反射技术.
3. 常用概念
3.1 类库:提供的类没有封装一定逻辑.
举例:类库就是名言警句,写作文时引入名言警句
3.2 框架:区别与类库,里面有一些约束.
举例:框架是填空题
七.MyBatis 简介
1. Mybatis 开源免费框架.原名叫iBatis,2010 在google code,2013 年迁
移到github
2. 作用: 数据访问层框架.
2.1 底层是对JDBC 的封装.
3. mybatis 优点之一:
3.1 使用mybatis 时不需要编写实现类,只需要写需要执行的sql 命

八. 环境搭建
1. 导入jar
2. 在src 下新建全局配置文件(编写JDBC 四个变量)
2.1 没有名称和地址要求
2.2 在全局配置文件中引入DTD 或schema
2.2.1 如果导入dtd 后没有提示
Window--> preference --> XML --> XMl catalog --> add 按钮
Cglib 依赖的包
动态代理包
日志包
字节码解析包也是cglib 依赖的包
日志包
日志包
日志包
Mybatis 核心包
驱动
日志包
日志包
2.3 全局配置文件内容
<?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>
<!-- default 引用environment 的id,当前所使用的环境-->
<environments default="default">
<!-- 声明可以使用的环境-->
<environment id="default">
<!-- 使用原生JDBC 事务-->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="smallming"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/bjsxt/mapper/FlowerMapper.xml"/>
</mappers>
</configuration>
3. 新建以mapper 结尾的包,在包下新建:实体类名+Mapper.xml
3.1 文件作用:编写需要执行的SQL 命令
3.2 把xml 文件理解成实现类.
3.3 xml 文件内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namesapce:理解成实现类的全路径(包名+类名) -->
<mapper namespace="a.b" >
<!-- id:方法名
parameterType:定义参数类型
resultType:返回值类型.
如果方法返回值是list,在resultType 中写List 的泛型,
因为mybatis
对jdbc 封装,一行一行读取数据
-->
<select id="selAll"
resultType="com.bjsxt.pojo.Flower">
select * from flower
</select>
</mapper>
4. 测试结果(只有在单独使用mybatis 时使用,最后ssm 整合时下面代
码不需要编写.)
InputStream is =
Resources.getResourceAsStream("myabtis.xml");
//使用工厂设计模式
SqlSessionFactory factory = new
SqlSessionFactoryBuilder().build(is);
//生产SqlSession
SqlSession session=factory.openSession();
List<Flower> list =
session.selectList("a.b.selAll");
for (Flower flower : list) {
System.out.println(flower.toString());
}
session.close();
九. 环境搭建详解
1.全局配置文件中内容
1.1 <transactionManager/> type 属性可取值
1.1.1 JDBC,事务管理使用JDBC 原生事务管理方式
1.1.2 MANAGED 把事务管理转交给其他容器.原生JDBC 事务
setAutoMapping(false);
1.2 <dataSouce/>type 属性
1.2.1 POOLED 使用数据库连接池
1.2.2 UNPOOLED 不实用数据库连接池,和直接使用JDBC 一样
1.2.3 JNDI :java 命名目录接口技术.
十.数据库连接池
1.在内存中开辟一块空间,存放多个数据库连接对象.
2.JDBC Tomcat Pool,直接由tomcat 产生数据库连接池.
3.图示
3.1 active 状态:当前连接对象被应用程序使用中
3.2 Idle 空闲状态:等待应用程序使用
Active Idle
4.使用数据库连接池的目的
4.1 在高频率访问数据库时,使用数据库连接池可以降低服务器系
统压力,提升程序运行效率.
4.1.1 小型项目不适用数据库连接池.
5.实现JDBC tomcat Pool 的步骤.
5.1 在web 项目的META-INF 中存放context.xml,在context.xml 编
写数据库连接池相关属性
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/ssm"
username="root"
password="smallming"
maxActive="50"
maxIdle="20"
name="test"
auth="Container"
maxWait="10000"
type="javax.sql.DataSource"
/>
</Context>
5.2 把项目发布到tomcat 中,数据库连接池产生了
6.可以在java 中使用jndi 获取数据库连接池中对象
6.1 Context:上下文接口.context.xml 文件对象类型
6.2 代码:
Context cxt = new InitialContext();
DataSource ds = (DataSource)
cxt.lookup("java:comp/env/test");
Connection conn = ds.getConnection();
6.3 当关闭连接对象时,把连接对象归还给数据库连接池,把状态
改变成Idle
十一. 三种查询方式
1.selectList() 返回值为List<resultType 属性控制>
1.1 适用于查询结果都需要遍历的需求
List<Flower> list = session.selectList("a.b.selAll");
for (Flower flower : list) {
System.out.println(flower.toString());
}
2.selectOne() 返回值Object,
2.1 适用于返回结果只是变量或一行数据时
int count = session.selectOne("a.b.selById");
System.out.println(count);
3.selectMap() 返回值Map
3.1 适用于需要在查询结果中通过某列的值取到这行数据的需求.
3.2 Map<key,resultType 控制>
Map<Object, Object> map = session.selectMap("a.b.c",
"name123");
System.out.println(map);

转载于:https://www.cnblogs.com/myitdog/p/10721167.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAX-RS 2.0的新功能– @BeanParam批注

至少可以说JAX-RS很棒&#xff0c;也是我的最爱之一&#xff01; 为什么&#xff1f; 功能丰富 直观&#xff08;因此学习曲线不那么陡峭&#xff09; 易于使用和开发 具有出色的RI – Jersey &#xff0c; RestEasy等 有足够的JAX-RS粉丝可以添加此内容&#xff01; JAX…

js操作json方法总结

相对于前端的老铁来说JSon并不陌生&#xff0c;JSON JavaScript Object Notation 是一种轻量级的数据交换格式&#xff0c;采用完全独立于语言的文本格式&#xff0c;是一种理想的数据交换格式。 json可以以对象的传递数据&#xff0c;也可以以字符串的形式传递数据&#xff0c…

反编译工具Reflector下载(集成FileGenerator和FileDisassembler)

Reflector是一款比较强大的反编译工具,相信很多朋友都用过它,但reflector本身有很多局限性,比如只能一个一个的查看方法等,但幸好 reflector支持插件功能目前网上有很多reflector的插件,本人找取了两个应用范围很广,并且广受好评的插 件:Reflector.FileDisassembler和Reflector…

带有自定义模块的JBoss EAP上的骆驼

Apache Camel —最好的开源集成库 Apache Camel是一个很棒的开放源代码集成库&#xff0c;可以用作ESB的主干或在独立的应用程序中进行系统的路由&#xff0c;转换或中介&#xff08;请参阅&#xff1a;集成多个系统&#xff09;。 Camel非常通用&#xff0c;不会迫使用户部署到…

Java中的读写锁

一、读写锁 1、初识读写锁 a&#xff09;Java中的锁——Lock和synchronized中介绍的ReentrantLock和synchronized基本上都是排它锁&#xff0c;意味着这些锁在同一时刻只允许一个线程进行访问&#xff0c;而读写锁在同一时刻可以允许多个读线程访问&#xff0c;在写线程访问的时…

webpack——概念的引入

## 在网页中会引用哪些常见的静态资源&#xff1f; JS - .js .jsx .coffee .ts&#xff08;TypeScript 类 C# 语言&#xff09; CSS - .css .less .sass .scss Images - .jpg .png .gif .bmp .svg 字体文件&#xff08;Fonts&#xff09; - .svg .ttf .eot .woff .woff2 模板文…

算法题解:动态规划解0-1背包问题

概述 背包问题&#xff08;Knapsack problem&#xff09;是一种组合优化的NP完全问题。问题可以描述为&#xff1a;给定一组物品&#xff0c;每种物品都有自己的重量和价格&#xff0c;在限定的总重量内&#xff0c;我们如何选择&#xff0c;才能使得物品的总价格最高。问题的名…

Flex4中的皮肤(2): Skin State

在上一篇 中&#xff0c;定义了一个最简单的SkinnableComponent并为其定义了两个Skin。 对于TransitionSkin&#xff0c;需要在enable时有不同的展现方式&#xff0c;这可以通过Skin State实现。 对自定义的SkinnableComponent的修改 首先在组件中定义isEnabled属性&#xff1a…

休眠自动冲洗的黑暗面

介绍 既然我已经描述了JPA和Hibernate刷新策略的基础知识 &#xff0c;我就可以继续阐明Hibernate的AUTO刷新模式的令人惊讶的行为。 并非所有查询都会触发会话刷新 许多人会认为Hibernate 总是在执行任何查询之前先刷新Session。 虽然这可能是一种更直观的方法&#xff0c;并…

洛谷P1636学画画

传送 这个题我们需要一个大胆的想法&#xff08;虽然AC后看了题解知道这是个定理&#xff09; &#xff08;求证明qwq&#xff09; 如果一个图有2或0个奇点&#xff0c;它就一定可以一笔画出&#xff0c;如果不是2或0个奇点&#xff0c;那答案就是奇点数/2 &#xff08;私认为因…

理解正则

正则的应用场景很多&#xff0c;匹配过滤有价值的内容&#xff0c;所以用好正则有事半功倍的效果正则就是用有限的符号&#xff0c;表达无限的序列正则的一般语法就是两条斜线中间的就是正则主体&#xff0c;可以有许多字符表示转义字符 \是转义字符&#xff0c;简单字符表示自…

vue项目中z-index不起作用(将vue实例挂在到window上面)

问题描述&#xff1a;由于原有项目&#xff08;传统项目&#xff09;中嵌入新的vue组件&#xff0c;dialog弹出框的z-index&#xff1a;999999&#xff1b;任然不起作用&#xff1b; 解决办法&#xff1a;将vue实例挂载到window 解决代码如下&#xff1a; 入口文件index.js中 i…

【算法】称骨算命法

称骨算命法是唐代著名的星象预测家袁天罡称骨的预测方法。这种方法同四柱算命一样&#xff0c;能确定一个人一生的吉凶祸福、荣辱盛衰&#xff0c;准确率很高&#xff0c;又便于掌握和运用。 一个人出生的年、月、日、时各有定数&#xff0c;年、月、日、时的重量都有具体规定。…

IDE:5个最喜欢的NetBeans功能

愉快的发展……。 NetBeans具有许多有趣的功能 &#xff0c;这些功能使开发非常容易&#xff0c;只需很少的步骤&#xff0c;并且可以在非常快速地将产品推向市场的情况下提供高产的环境 。 将我的谈话仅限于五个功能非常困难&#xff0c;而此IDE具有大量有趣的功能。 但是在…

flask总结之session,websocket,上下文管理

1.关于session flask是带有session的&#xff0c;它加密后存储在用户浏览器的cookie中&#xff0c;可以通过app.seesion_interface源码查看 from flask import Flask,sessionapp Flask(__name__)app.secret_key aptx4869 # 必须要指定这个参数app.route(/login)def login():…

Hbase 和 RDBMS的区别

一 Hbase是个什么东西&#xff1f; 首先我们来看看两个概念&#xff0c;面向行存储和面向列存储。面向行存储&#xff0c;我相信大伙儿应该都清楚&#xff0c;我们熟悉的RDBMS就是此种类型的&#xff0c;面向行存储的数据库主要适合于事务性要求严格场合&#xff0c;或者说面向…

css设置背景透明度

设置背景透明用&#xff1a; background-color: rgba(0, 0, 0, 0.4);虽然opacity:0.5;也可以设置背景透明&#xff0c;但是会影响整体&#xff1b;推荐使用rgba设置背景透明&#xff0c;只会在当前的内容内起作用转载于:https://www.cnblogs.com/phermis/p/11395227.html

Hibernate延时加载

首先说明Hibernate3延迟加载只对load,get,find一些内值方法有用&#xff0c;对hql等写sql的无效。延迟加载机制是为了避免一些无谓的性能开销而提出来的&#xff0c;所谓延迟加载就是当在真正需要数据的时候&#xff0c;才真正执行数据加载操作。在Hibernate中提供了对实体对象…

深入了解Oracle IDM审核

在处理敏感信息的任何产品中&#xff0c; 报告都是至关重要的功能。 同样适用于身份和访问管理工具。 Oracle IDM的审核模块是其OOTB报告功能的基础。 让我们快速看一下审核引擎以及它如何促进OIM中的报告功能。 这里展示的用例很简单– 在OIM中更改为用户记录。 从审核的角度…

c#---ref参数

员工基本工资为5000元&#xff0c;奖金方法500元&#xff0c;调用该方法之后为什么工资还是5000元&#xff1f; static void Main(string[] args){double salary 5000;jiangJin(salary);Console.WriteLine(salary);Console.ReadKey();}public static void jiangJin(double sal…