MyBatis学习笔记一

一、高级软件介绍

1.JDK 8

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.包:公司域名倒写edu.swpu

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类上和方法上使用文档注释


/** */

1

10.2 在方法里面使用


/* */ 或 //

1

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视图

六、框架是什么?

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

Cglib依赖的包

动态代理包

日志包

字节码解析包也是cglib依赖的包

日志包

日志包

日志包

Mybatis核心包

驱动

日志包

日志包

2.在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="password"/>

</dataSource>

</environment>

</environments>

<mappers>

<mapper resource="edu/swpu/mapper/FlowerMapper.xml"/>

</mappers>

</configuration>

郑州不孕不育医院:http://wapyyk.39.net/zz3/zonghe/1d427.html

3.新建以mapper结尾的包,在包下新建:实体类名+Mapper.xml

3.1文件作用:编写需要执行的SQL命令

3.2把xml文件理解成实现类

3.3xml文件内容

https://www.xiaohongshu.com/discovery/item/5d7492ce00000000020194c2

<?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="edu.swpu.pojo.Flower">

select * from flower

</select>

</mapper>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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

2

3

4

5

6

7

8

9

10

九、环境搭建详解

1.全局配置文件中内容

1.1<transactionManager/>属性可取值

1.1.1JDBC:事务管理使用JDBC原生事务管理方式

1.1.2MANAGED:把事务管理转交给其他容器,原生JDBC事务setAutoMapping(false);

1.2<dataSource/>type属性

1.2.1POOLED:使用数据库连接池

1.2.2UNPOOLED:不使用数据库连接池,和直接使用JDBC一样

1.2.3JNDI:java命名目录接口技术

十、数据库连接池

1.在内存中开辟一块空间,存放多个数据库连接对象

2.JDBC Tomcat Pool,直接由tomcat产生数据库连接池

3.图示

3.1active状态:当前连接对象被应用程序使用中

3.2Idle空闲状态:等待应用程序使用

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>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

5.2把项目发布到tomcat中,数据库连接池产生了

6.可以在java中使用JNDI获取数据库连接池中对象

6.1Context:上下文接口.context.xml文件对象类型

6.2代码


Context cxt = new InitialContext();

DataSource ds = (DataSource)

cxt.lookup("java:comp/env/test");

Connection conn = ds.getConnection();

1

2

3

4

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

2

3

4

2.selectOne()返回值Object

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


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

System.out.println(count);

1

2

3.selectMap()返回值Map

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

3.2Map<key, resultType 控制>


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

System.out.println(map);


猜你喜欢

转载自blog.51cto.com/14510269/2437736