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相关推荐

  1. Mybatis插件原理和PageHelper结合实战分页插件(七)

    今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理.PageHelper 的官方网站:https://github ...

  2. Spring整合mybatis中的sqlSession是如何做到线程隔离的?

    转载自  Spring整合mybatis中的sqlSession是如何做到线程隔离的? 项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按 ...

  3. HBase学习指南之HBase原理和Shell使用

    HBase学习指南之HBase原理和Shell使用 参考资料: 1.https://www.cnblogs.com/nexiyi/p/hbase_shell.html,hbase shell 转载于: ...

  4. IAP的原理和stm8的IAP

    一.引出(IAP的原理和stm8上实现IAP的问题) 具有IAP功能的单片机,程序可以分为两部分:IAP和APP.APP是用来实现真正功能的程序,而IAP是用来远程重新编程APP的程序.单片机上电时会 ...

  5. 单链表反转的原理和python代码实现

    链表是一种基础的数据结构,也是算法学习的重中之重.其中单链表反转是一个经常会被考察到的知识点. 单链表反转是将一个给定顺序的单链表通过算法转为逆序排列,尽管听起来很简单,但要通过算法实现也并不是非常容 ...

  6. 计算机网络原理和OSI模型与TCP模型

    计算机网络原理和OSI模型与TCP模型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机 ...

  7. HTTPS原理和CA证书申请

    转载自:HTTPS原理和CA证书申请(满满的干货) 众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于 ...

  8. class加载原理和Dex加载的原理-----android插件化技术

    2019独角兽企业重金招聘Python工程师标准>>> class加载原理和Dex加载的原理 转载于:https://my.oschina.net/quguangle/blog/15 ...

  9. 转载椭圆曲线原理和openssl命令操作

    原文地址:https://www.johannes-bauer.com/compsci/ecc/ 椭圆曲线原理和openssl命令操作

最新文章

  1. Django-缓存的配置
  2. python能处理多大的数据包-利用Python进行数据处理(更新)
  3. Activity和Task
  4. 24、Cocos2dx 3.0游戏开发找小三之网格动作:高炫酷的3D动作
  5. el-input中设置onkeypress事件是否匹配正则表达式显示输入内容的格式
  6. Win10+vs2013+Caffe静态库配置自己的工程
  7. C++为什么使用指针---堆和栈的区别
  8. 理财平台频繁暴雷,羊毛党该要本金还是撸利息?
  9. .NET Core log4net 使用
  10. SpringMVC框架搭建( 使用Jar包搭建)
  11. androidstudio 日历视图怎么显示农历_ipad自带的日历程序
  12. grub2配置原理分析
  13. 【感悟】人生本如梦,学会看淡一切。
  14. html5和css3书籍推荐,HTML5与CSS3权威指南
  15. (转)2017德勤技术趋势报告:未来8年,机器智能如何创造价值
  16. Spring源码系列(十一)——Spring源码总结
  17. 【Linux系统】第2节 虚拟机中安装Kali系统
  18. jp.ne.so_net.ga2.no_ji.jcom.JComException: createInstance() failed HRESULT=0x800401F3L
  19. 路径的单线杠双斜杠区别
  20. PySpark基础入门(3):RDD持久化

热门文章

  1. Windows系统日志
  2. VB.NET编程的几个小技巧
  3. 计算机用户日记怎么查询系统,如何查看电脑使用记录?在电脑日志可查看.
  4. 有关Mysql中的索引
  5. 验证码工具类 – Random – 随机数用法 – 豹子号 – 顺子号
  6. 韩国绿芯1~16通道触摸芯片型号推荐
  7. Cocos2d-x 之大牛看法佐证
  8. 游戏开发是个“坑”,而且是个“天坑”
  9. android k主题,K主题(萌图锁屏)
  10. 云计算课程-Ubuntu系统搭建gitlab