Mybatis原理和SqlSession
Mybatis 环境搭建
1.下载mybatis
在github上下载
2.导入依赖
测试相关的包: junit hamcrest
日志相关的包:log4j-1.2.16 slf4-api slf4j-log4j12
数据库相关jar包: mysql-connector
Mybatis先关jar包: mybaits-3.4.5
<!-- junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- MySql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.32</version></dependency><!-- Mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><!--日志包--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>
</dependencies>
3.创建log4j文件
(1)首先创建resources包(src\main\resources
)
(2)在resources包下创建log4j.properties文件
(3)配置log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2.Mybatis操作流程
(1)mybatis开发流程
》1 创建SqlSessionFactoryBuilder对象
》2 创建SqlSessionFactory对象
》3 加载SqlMapConfig.xml配置文件
》4 创建SqlSession对象
》5 执行SqlSession对象执行删除
》6 打印结果
》7 释放资源
详细代码
//创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();//创建SqlSessionFactor对象InputStream inputStream=TestMybatis01.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);//加载文件,输入流//创建SqlSession对象SqlSession sqlSession=sqlSessionFactory.openSession();System.out.println(sqlSession);//执行sql语句User user=new User();user.setId(8);user.setName("xjj");sqlSession.insert("com.xjj.bean.User.insetUser",user);sqlSession.commit();//mybatis的session不会自动提交,必须手动提交sqlSession.close();
mybatis核心配置文件
(1)创建SqlMapConfig.xml文件
在src\main\resources下
,创建方法和log4j相同
(2)配置SqlMapConfig.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--dtd是对xml配置标签与属性的约束-->
<configuration><!-- environments环境 开发环境,生产环境--><environments default="development"><environment id="development"><!-- 使用jdbc的事务管理 --><transactionManager type="JDBC"/><!-- dataSource Mybatis自带数据源连接池--><dataSource type="POOLED"><!-- 四大信息 --><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost/user?characterEncoding=utf-8"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!-- 配置多个映射文件--><mappers><mapper resource="UserMapper.xml"/></mappers>
</configuration>
(3)映射文件
在src\main\resources下创建UserMapper.xml文件
创建方法和上述两个文件相同
(4)配置映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- map的约束文件-->
<!-- namespace 命名空间 防止id冲突找不到正确的id-->
<!-- id Mybatis是将sql语句写在xml文件中,以后session根据namesapce.id 合在一起获取sql-->
<!-- 在jdbc中,sql语句使用?作占位符,但在mybatis #{id}-->
<mapper namespace="com.xjj.bean.User"><delete id="deleteById" parameterType="int" >delete from user where id = #{id}</delete><insert id="insetUser" >insert into user (id,name) values (#{id},#{name})</insert><select id="findUserById" resultType="com.xjj.bean.User" >select * from user where name = #{name}</select>
</mapper>
MySessionUtil
1.静态代码快
2.getSession()方法
创建MySessionUtil.java
src\main\com\xjj\util\MySessionUtil.java
package com.xjj.util;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;public class MysqlSessionUtil {private static SqlSessionFactory sessionFactory;//static 静态代码只会执行一次static{// 创建SqLSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();//创建SqlSessionFactory对象InputStream inputStream =MysqlSessionUtil.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");sessionFactory=sqlSessionFactoryBuilder.build(inputStream);//参1 输入流,加载SqlMapConfig.xml文件}public static SqlSession getSession(){//创建SqlSession对象SqlSession sqlSession=sessionFactory.openSession();return sqlSession;}
}
创建TestMybatis02()文件
src\main\test\java\com\xjj\pack01\TestMybatis02
package com.xjj.pack01;import com.xjj.util.MysqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;public class TestMybatis02 {@Testpublic void test01(){//创建Sqlsession对象,调用getSession方法SqlSession sqlSession = MysqlSessionUtil.getSession();System.out.println(sqlSession);sqlSession.delete("com.xjj.bean.User.deleteById",1);//删除id编号为1的user的所有信息sqlSession.commit();//mybatis不会自动提交sessionsqlSession.close();//释放资源}
}
Mybatis原理和SqlSession相关推荐
- Mybatis插件原理和PageHelper结合实战分页插件(七)
今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理.PageHelper 的官方网站:https://github ...
- Spring整合mybatis中的sqlSession是如何做到线程隔离的?
转载自 Spring整合mybatis中的sqlSession是如何做到线程隔离的? 项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按 ...
- HBase学习指南之HBase原理和Shell使用
HBase学习指南之HBase原理和Shell使用 参考资料: 1.https://www.cnblogs.com/nexiyi/p/hbase_shell.html,hbase shell 转载于: ...
- IAP的原理和stm8的IAP
一.引出(IAP的原理和stm8上实现IAP的问题) 具有IAP功能的单片机,程序可以分为两部分:IAP和APP.APP是用来实现真正功能的程序,而IAP是用来远程重新编程APP的程序.单片机上电时会 ...
- 单链表反转的原理和python代码实现
链表是一种基础的数据结构,也是算法学习的重中之重.其中单链表反转是一个经常会被考察到的知识点. 单链表反转是将一个给定顺序的单链表通过算法转为逆序排列,尽管听起来很简单,但要通过算法实现也并不是非常容 ...
- 计算机网络原理和OSI模型与TCP模型
计算机网络原理和OSI模型与TCP模型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机 ...
- HTTPS原理和CA证书申请
转载自:HTTPS原理和CA证书申请(满满的干货) 众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于 ...
- class加载原理和Dex加载的原理-----android插件化技术
2019独角兽企业重金招聘Python工程师标准>>> class加载原理和Dex加载的原理 转载于:https://my.oschina.net/quguangle/blog/15 ...
- 转载椭圆曲线原理和openssl命令操作
原文地址:https://www.johannes-bauer.com/compsci/ecc/ 椭圆曲线原理和openssl命令操作
最新文章
- Django-缓存的配置
- python能处理多大的数据包-利用Python进行数据处理(更新)
- Activity和Task
- 24、Cocos2dx 3.0游戏开发找小三之网格动作:高炫酷的3D动作
- el-input中设置onkeypress事件是否匹配正则表达式显示输入内容的格式
- Win10+vs2013+Caffe静态库配置自己的工程
- C++为什么使用指针---堆和栈的区别
- 理财平台频繁暴雷,羊毛党该要本金还是撸利息?
- .NET Core log4net 使用
- SpringMVC框架搭建( 使用Jar包搭建)
- androidstudio 日历视图怎么显示农历_ipad自带的日历程序
- grub2配置原理分析
- 【感悟】人生本如梦,学会看淡一切。
- html5和css3书籍推荐,HTML5与CSS3权威指南
- (转)2017德勤技术趋势报告:未来8年,机器智能如何创造价值
- Spring源码系列(十一)——Spring源码总结
- 【Linux系统】第2节 虚拟机中安装Kali系统
- jp.ne.so_net.ga2.no_ji.jcom.JComException: createInstance() failed HRESULT=0x800401F3L
- 路径的单线杠双斜杠区别
- PySpark基础入门(3):RDD持久化