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

  1. 创建表

Create table 表名(

列名   类型  约束 auto_increment comment ‘备注’,

);

  • Eclipse使用
  1. 创建项目

1.1 选择target runtime,否则出现新建jsp报错

1.2 如果忘记选择,右键项目--> build path --> configure path -->选项卡library --> 第四个add library --> server runtime

 

  1. 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 在方法里面使用/*  */  或 //

  1. 类: 大驼峰
  2. 方法,属性:小驼峰
  • MVC开发模式
  1. M: Model 模型,实体类和业务和dao
  2. V: view 视图. JSP
  3. C:Controller 控制器,servlet

3.1 作用:视图和逻辑分离

  1. MVC适用场景:大型项目开发.
  2. 图示例

5.1 先设计数据库

5.2 先写实体类

5.3 持久层

5.4 业务逻辑

5.5 控制器

5.6 视图

 

 

  • 高级课程大纲介绍
  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天

2.3 第三部分:SSH框架 5天

  • 框架是什么?
  1. 框架:软件的半成品.为解决问题制定的一套约束,在提供功能基础上进行扩充.
  2. 框架中一些不能被封装的代码(变量),需要使用框架者新建一个xml文件,在文件中添加变量内容.

2.1 需要建立特定位置和特定名称的配置文件.

2.2 需要使用xml解析技术和反射技术.

  1. 常用概念

3.1 类库:提供的类没有封装一定逻辑.

举例:类库就是名言警句,写作文时引入名言警句

3.2 框架:区别与类库,里面有一些约束.

举例:框架是填空题

  • MyBatis简介
  1. Mybatis 开源免费框架.原名叫iBatis,2010在google code,2013年迁移到github
  2. 作用: 数据访问层框架.

底层是对JDBC的封装

  1. mybatis优点之一:

3.1 使用mybatis时不需要编写实现类,只需要写需要执行的sql命令

 

  • 环境搭建
  1. 导入jar

 

  1. 在src下新建全局配置文件(编写JDBC四个变量)

2.1 没有名称和地址要求

2.2 在全局配置文件中引入DTD或schema

2.2.1 如果导入dtd后没有提示

Window--> preference --> XML --> XMl catalog --> add按钮

 

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>

 

  1. 新建以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>

  1. 测试结果(只有在单独使用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空闲状态:等待应用程序使用

 

  1. 使用数据库连接池的目的

4.1 在高频率访问数据库时,使用数据库连接池可以降低服务器系统压力,提升程序运行效率.

4.1.1 小型项目不适用数据库连接池.

  1. 实现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中,数据库连接池产生了

  1. 可以在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());

}

  1. selectOne() 返回值Object,

2.1 适用于返回结果只是变量或一行数据时

int count = session.selectOne("a.b.selById");

System.out.println(count);

  1. selectMap() 返回值Map

3.1 适用于需要在查询结果中通过某列的值取到这行数据的需求.

3.2 Map<key,resultType控制>

Map<Object, Object> map = session.selectMap("a.b.c", "name123");

System.out.println(map);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值