MyBatis学习笔记一

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MarcoAsensio/article/details/96013618

一、高级软件介绍
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类上和方法上使用文档注释

/** */

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视图
六、框架是什么?
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>

3.新建以mapper结尾的包,在包下新建:实体类名+Mapper.xml
3.1文件作用:编写需要执行的SQL命令
3.2把xml文件理解成实现类
3.3xml文件内容

<?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>

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/>属性可取值
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>

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();

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.2Map<key, resultType 控制>

Map<Object, Object> map = session.selectMap("a.b.c", "name");
System.out.println(map);
展开阅读全文

没有更多推荐了,返回首页