mybatis的学习探讨(上)
来源:互联网 发布:监控矩阵键盘说明书 编辑:程序博客网 时间:2024/04/30 09:14
<span style="color: rgb(51, 51, 51); font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px; line-height: 20px; text-align: center; background-color: rgb(255, 255, 255);"> 最近在一个名叫mybatis的java数据库框架,自我感觉上手比hibernate快很多,一个hibernate配置过于复杂,封装过多变得很死,不是灵活。然而mybatis比较灵活,因为这个框架依赖于你编写sql语句的能力,</span><span style="color: rgb(51, 51, 51); font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px; line-height: 20px; background-color: rgb(255, 255, 255);">丰富多彩的sql语句任你写,而且不需要担心sql注入的问题。</span>
首先是大体上了解mybatis的基本结构:
一 . 配置文件
1. 一个主配置文件: myBatisConig.xml (此xml文件将会配置全局的数据,jdbc连接配置,引入mapper映射文件等等)。
2. 数据库映射以及sql语句储存文件 : DataBaseMapper.xml,(文件名是我自定义的,没有指定名称,大家学习的时候自己自定义取名称,但是需要有含义,能看懂就行)。
3. 连接mysql数据库的jar包,大家自己添加,build path进去。
二.加载配置文件,通过工厂模式获取sqlsession 的会话对象。写一个获取session的工具类 package xyz.dream.mybatis import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; class MyBatisConf{ private SqlSessionFactory sqlSessionFactory=null; public MyBatisConf(String myBatisConfigXmlName){ InputStream inputStream=null; try { inputStream=Resources.getResourceAsStream(myBatisConfigXmlName); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); } //获取sqlSession对象 意思是从数据库连接池获取一个连接对象 public SqlSession getSqlSession(){ SqlSession session=sessionFactory.openSession(); return session; } }
三.简单演示一个例子
介绍一下mybatis的大致流程:通过mybatis的sqlsession对象,调用相关的增删改查方法,insert,delete,update,select等方法。实现对数据库的crud操作。在之前所说的DataBaseMapper.xml文件中写好了要执行的sql语句的id,传递参数类型,返回参数,通过这个id传入到insert,delete等方法中,就能实现crud。
模拟两条数据, 现在来查询一个表person(user_qq ,user_name,age, sex),在mysql数据库中建好如下信息。有两条信息
1234 jack 30 man
1235 tom 32 man
在DatabaseBaseMapper.xml中写好我们要进行操作的sql语句:
<span style="font-family:Microsoft YaHei;"></span>
<span style="font-family:Microsoft YaHei;"><?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"> <!-- 映射文件的命名空间--> <mapper namespace="person" > <!--查询记录数1. id唯一表示一条sql语句 2. resultType 是指数据返回的类型: Interger 3. <select> select查询标签,按此想法,大家也都知道剩下的标签 --> <selectid="person.selectCountOfPerson" resultType="Integer"> select count(*) from person </select> <!--通过user_qq查询 人员的姓名 1. paramterType 传递参数的数据类型 2. #{user_qq} ==> 防止sql注入,变量替代传过来的Integer的数据 --> <select id="person.selectUserNameByUserQq" parameterType="Integer" resultType="String"> select user_name from person where user_qq=#{user_qq} </select></mapper></span>
测试代码: 新建一测试类 Test.java(在main方法中测试以下代码)
<span style="font-family:微软雅黑, Microsoft YaHei;"> </span><span style="font-family:Microsoft YaHei;">MyBatisConf conf=new MyBatisConf("myBatisConfig.xml"); //加载配置文件 SqlSession sessionOne=conf.getSqlSession();// 获取数据库操作对象 //获取记录行数 int personCount=sessionOne.selectOne("person.selectCountOfPerson"); //事务提交 sessionOne.commit(); System.out.println(personCount);// 显示为 2 //通过user_qq 查询其名字 String personName=sessionOne.selectOne("person.selectUserNameByUserQq",1234); //事务提交 sessionOne.commit(); System.out.println(personName);//输出 jack</span>
通过上面的例子大家应该大致知道mybatis的大致流程了。
1. 配置主配置文件myBatisConfig.xml
2. 配置好DateBaseMapper.xml,现在此文件写好你要执行的sql语句,取一个唯一标识的id,是否需要传参,参数类型,返回值类型等,把写好的sql语句放在select标签内。需要传入的变量,用#{var} 代替,防止sql注入。
3. 获取操作对象 session,执行需要的sql语句,通过调用session内部方法来实现。传递 DataBaseMapper.xml 的sql语句全名id(命名空间namespace+id),选择是否传递参数。接收返回值。
4. 记住事务提交 session.commit(),执行成功!
* 本文章为原创文章,引用请注明出处。
0 0
- mybatis的学习探讨(上)
- mybatis的学习探讨(下)
- mybatis的学习探讨(中 )
- 地震的影响探讨(上)
- 探讨strcpy函数的实现(上)
- 探讨strcpy函数的实现(上)
- 机器学习的几个问题探讨
- MyBatis的学习(一)
- myBatis的学习(一)
- Mybatis的学习(一)
- Mybatis的学习(二)
- Mybatis的学习(三)
- Android平台上的进程调度探讨
- Android平台上的进程调度探讨
- Madlib上关联规则的探讨
- 学习Mybatis:Mybatis的使用
- 渐进增强式布局探讨(上)
- mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法)
- win10 下nginx开机自启动
- Listen第二个参数的意义
- HttpSession详解
- 交换俩个数组的内容(数组大小一样)
- jdk环境配置及测试
- mybatis的学习探讨(上)
- Vuln - Cisco - CVE-2016-6366
- 利用百度地图采集大量某一区域经纬度信息
- uva10820(欧拉函数,排列组合)
- 微信小程序示会话管理应用场景例利用腾讯云仅限开发案例三
- 移动端获取屏幕宽度
- HTML5学习_day05(6)--html之布局中使用浮动带来的问题
- 微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
- byte数组 和 16进制进制见的转换