思维导图

@有对应的例子

@1接入数据库 配置文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD
  4.  
  5. Config 3.0//EN"
  6. "http://mybatis.org/dtd/mybatis-3-config.dtd
  7.  
  8. ">
  9. <!--连接数据库需要的配置文件-->
  10. <configuration>
  11. <!-- 使用外部文件传入连接数据库信息 -->
  12. <properties resource ="conf/jdbc_oracle.properties" />
  13. <!-- 简化 在需要写路经的地方可以直接简化掉com.ljk.model这些 -->
  14. <typeAliases>
  15. <package name="com.ljk.model"/>
  16. </typeAliases>
  17. <!-- 连接数据库需要的信息 -->
  18. <environments default="test">
  19. <environment id="test">
  20. <transactionManager type="JDBC"/>
  21. <dataSource type="POOLED">
  22. <property name="driver" value="${jdbc.ClassName}"/>
  23. <property name="url" value="${jdbc.url}"/>
  24. <property name="username" value="${jdbc.name}"/>
  25. <property name="password" value="${jdbc.password}"/>
  26. </dataSource>
  27. </environment>
  28. </environments>
  29.  
  30. <!--集合 映射文件-->
  31. <mappers>
  32. <!--找到 映射文件的地址-->
  33. <!-- 定义的 映射文件 需要在这里把路经写出来 -->
  34. <mapper resource="com/ljk/mapper/ClasMapper.xml"/>
  35. <mapper resource="com/ljk/mapper/StudentMapper.xml"/>
  36. </mappers>
  37. </configuration>

@2 储存连入数据信息文件

  1. jdbc.name=XXXX
  2. jdbc.password=XXXX
  3. jdbc.ClassName=oracle.jdbc.OracleDriver
  4. jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl

@3 获取SqlSession

  1. /**连接数据库
  2. * @author 墨水瓶
  3. */
  4. public class Mybatis_DB {
  5. private static SqlSessionFactory sqls;
  6. public static SqlSessionFactory getSqlSessionFactory() {
  7. //写连接数据库 的配置文件
  8. String s = "conf/Mybatis_config.xml";
  9. try {
  10. InputStream in = Resources.getResourceAsStream(s);
  11. sqls = new SqlSessionFactoryBuilder().build(in);
  12. } catch (IOException e) {
  13. e.printStackTrace();
  14. }
  15. return sqls;
  16. }
  17. /**调用这个
  18. * @return 连接数据库
  19. */
  20. public static SqlSession getSqls() {
  21. if(sqls == null) {
  22. sqls = getSqlSessionFactory();
  23. }
  24. return sqls.openSession();
  25. }
  26. }

@4 级联

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5.  
  6. <mapper namespace="com.ljk.mapper.StudentMapper">
  7.  
  8. <!-- 级联 -->
  9. <!-- 类型为获取到的数据的类型 id与底下对应的select的resultMap一样 -->
  10. <resultMap type="Student" id="resultStudent">
              <!-- 一对一查询 返回的是一个clas类 -->>
  11. <association property="_class" column="CLASSID"
  12. select="com.ljk.mapper.ClassMapper.select_class"/>
  13. </resultMap>
  14. <!-- 值为想要连接的resultMap的id的值-->
  15. <select id="select_student" resultMap="resultStudent">
  16. select * from student
  17. </select>
  18. </mapper>

以上为1对1的查询方式

1对多需要用到collection标签

使用级联 时 model 模型类里面的 模型中需要加入对应的属性

例 :

  1. // 在clas 模型类中 需要有一个 Student的集合
  2. // 因为一个班级包含多个学生
  3. private List<Student> student;
  4.  
  5. //在Student 中 有一个Clas 类
  6. // 因为 学生对应着只有一个班级
  7. private Class _class;

@5 映射文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5.  
  6. <!-- mapper name属性传入对应接口的限定名 -->
  7. <mapper namespace="com.ljk.mapper.ClasMapper">
  8.  
  9. <!-- id 对应接口中的方法名 resultType 返回的 类型是一个Clas类-->
  10. <select id="select_clas" resultType="Clas">
  11. <!-- 写sql语句 -->
  12. select * from class c where c.ids = #{ids}
  13. </select>
  14.  
  15. <!-- 传值得时候是条件查询 不传值的时候是全表查询 -->
  16. <select id="select_dong" resultType="clas">
  17. <!-- 动态sql 语句 -->
  18. <!-- 可以根据传入值得不同执行不同的sql语句 -->
  19. select * from class c
  20. <if test="ids != null">
  21. where c.ids = #{ids}
  22. </if>
  23. </select>
  24.  
  25. </mapper>

动态sql语句
    1, <if>条件
        <if test="key!=null">
            拼接sql语句
        </if>
    2, <choose><when><otherwise>
        <choose>
            <when test="key=='value'">
                拼接sql语句
            </when>
            <when test="key=='value'">
                拼接sql语句
            </when>
            <otherwise>
                拼接sql语句
            </otherwise>
        </choose>
    3, <where>
        自动添加where关键字
        如果where子句第一句中有 or 或者 and 则删除第一个
    4, <trim>
        功能与<where>类似, 并且提供了前缀, 后缀的添加, 更加灵活
    5, <foreach>
        用来遍历传入的集合参数
            item(定义集合中每个对象的名字),
            collection(集合的对象的名字),
            open(定义开始的字符),
            close(定义结束的字符),
            separator(定义分割的字符)
    6, <set>
        主要用于update
        自动加上set关键字
        自动剔除最后一个 ","
    7, <sql>
        经常用于一些常用或者固定的语句, 在外面定义一个语句, 在各种标签中引入
        使用include, 相当于直接写在上面
    8, <selectKey>
        用于不支持自增长主键的数据库, 尽量避免写这个东西

xml中的 符号
    &lt;    <    小于号                                           
    &gt;    >    大于号
    &amp;    &    和
    &apos;    ’    单引号
    &quot;    "    双引号

符号也可以写到中括号中间使用
    <![CDATA[]]>

Mybatis框架 基础的更多相关文章

  1. MyBatis 框架 基础应用

    1.ORM的概念和优势 概念: 对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据 ...

  2. MyBatis框架基础详细开发流程

    MyBatis 项目已托管到GitHub,大家可以去GitHub查看下载!并搜索关注微信公众号 码出Offer 领取各种学习资料! 一.框架概述 1.1 什么是框架? 软件的半成品,解决了软件开发过程 ...

  3. Mybatis框架基础入门(三)--Mapper动态代理方式开发

    使用MyBatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper动态代理开发方法. 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,此方式开发Dao,存在以下问题: Dao方 ...

  4. Mybatis框架基础支持层——日志模块(8)

    前言: java开发中常用的日志框架有Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,这些工具对外的接口不尽相同.为了统一这些工具的接 ...

  5. Mybatis框架基础支持层——反射工具箱之Reflector&ReflectorFactory(3)

    说明:Reflector是Mybatis反射工具的基础,每个Reflector对应一个类,在Reflector中封装有该类的元信息, 以及基于类信息的一系列反射应用封装API public class ...

  6. Mybatis框架基础入门(一)--简介及优势

    一.什么是Mybatis 这里借用官网的一句话介绍什么是mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC ...

  7. Mybatis框架基础支持层——反射工具箱之MetaClass(7)

    简介:MetaClass是Mybatis对类级别的元信息的封装和处理,通过与属性工具类的结合, 实现了对复杂表达式的解析,实现了获取指定描述信息的功能 public class MetaClass { ...

  8. Mybatis框架基础支持层——反射工具箱之实体属性Property工具集(6)

    本篇主要介绍mybatis反射工具中用到的三个属性工具类:PropertyTokenizer.PropertyNamer.PropertyCopier. PropertyTokenizer: 主要用来 ...

  9. Mybatis框架基础支持层——反射工具箱之对象工厂ObjectFactory&DefaultObjectFactory(5)

    ObjectFactory官方简介:MyBatis每次创建结果集对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成. 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认 ...

随机推荐

  1. java.util.HashSet

    Operations Time Complexity Notes add, remove, contains, size O(1) assuming the hash functions has di ...

  2. C/C++调用Golang 二

    C/C++调用Golang 二 <C/C++调用Golang 一>简单介绍了C/C++调用Golang的方法步骤,只涉及一个简单的函数调用.本文总结具体项目中的使用场景,将介绍三种较复杂的 ...

  3. linux下新建svn项目

    1.新建项目svnadmin create /mnt/fbdisk/svn/newproject 2.会在svn下面建立newproject目录total 24drwxr-xr-x 2 root ro ...

  4. CSS实现商城分类导航效果(hover选择器)

    学完制作出这个导航效果之后,收获最多的是了解了hover选择器的功能,:hover 选择器用于选择鼠标指针浮动在上面的元素.在鼠标移到元素上时向此元素添加特殊的样式(CSS).例如:改变鼠标悬停处的元 ...

  5. Tomcat在windows系统中的防火墙设置

    在Win7下安装Tomcat后,其他机器无法访问到Tomcat服务,需要修改防火墙设置. 控制面板->window防火墙->允许程序通过Windows防火墙通信 将Tomcat目录下\bi ...

  6. 三:Redis连接池、JedisPool详解、Redisi分布式

    单机模式: package com.ljq.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; ...

  7. c# 去除字符串中重复字符

    String.Join 和 Distinct 方法 https://www.cnblogs.com/louby/p/6224960.html 1.在写程序中经常操作字符串,需要去重,以前我的用方式利用 ...

  8. 动态求区间K大值(权值线段树)

    我们知道我们可以通过主席树来维护静态区间第K大值.我们又知道主席树满足可加性,所以我们可以用树状数组来维护主席树,树状数组的每一个节点都可以开一颗主席树,然后一起做. 我们注意到树状数组的每一棵树都和 ...

  9. alpha rarefaction using qiime

    shannon菌群多样性指数 H=-∑(Pi)(㏑Pi) Pi=样品中属于第i种的个体的比例,如样品总个体数为N,第i种个体数为ni,则Pi=ni/N: 各种之间,个体分配越均匀,H值就越大.如果每一 ...

  10. java多线程(八)-死锁问题和java多线程总结

    为了防止对共享受限资源的争夺,我们可以通过synchronized等方式来加锁,这个时候该线程就处于阻塞状态,设想这样一种情况,线程A等着线程B完成后才能执行,而线程B又等着线程C,而线程C又等着线程 ...