MyBatis学习笔记(一)

测试Demo的目录结构:

com.luohao.config
    ->MyBatisCongfig.xml
    ->userMapper.xml
com.luohao.Test
    ->TestMyBatis.class
    ->User.class

测试数据库是MySQL,用的数据库连接是JDBC,上面的目录结构中MyBatisConfig.xml是MyBatis的核心配置文件,userMapper.xml是用来映射SQL语句的,这里的映射使用了mxl文件来配置而没有使用注释的方式的原因是在很多复杂的情况下使用xml文件来配置这里会使程序看起来整洁而且编程更加高效。

核心配置文件的xml文件是这样的:

文件:MyBatisConfig.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5  <configuration>
 6          <environments default="development">
 7             <environment id="development">
 8                 <transactionManager type="JDBC"/>
 9                 <dataSource type="POOLED">
10                     <property name="driver" value="com.mysql.jdbc.Driver"/>
11                     <property name="url" value="jdbc:mysql://localhost:3306/blogtest"/>
12                     <property name="username" value="root"/>
13                     <property name="password" value="*******"/>
14                 </dataSource>
15             </environment>
16           </environments>
17
18           <mappers>
19               <mapper resource="com/luohao/config/userMapper.xml"/>
20           </mappers>
21
22 </configuration>

每一个environment对应了每一个数据库,这里的数据使用了我的一个博客的数据库作为测试。底下的mapper标签是用来映射SQL语句的文件路径的,这里从目录结构来看userMapper.xml来看路径应该是com/luohao/config/userMapper.xml。

之后只映射的SQL语句,文件为userMapper.xml

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="com.luohao.config.userMapper">
4     <select id="Username" parameterType="String"
5         resultType="com.luohao.Test.User">
6         select * from user where username=#{username}
7     </select>
8 </mapper> 

这里的命名空间是必须的,这是MyBatis是新特性也是让代码跟家严格的特性。

id用是一个标识,之后的java代码中会出现这个,paramterType是用来对应数据类型的,这里是username,对应的是String类,resultType对应的是实例类也可以叫做模型类,是数据库SQL语句执行所得到参数所对应的get或者set方法。

之后的数据库语句基本一致,只是#号之后的java代码会插入要查找的东西。下面就是java代码了。

 1 package com.luohao.Test;
 2
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import org.apache.ibatis.io.Resources;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9
10 public class TestMyBaits {
11
12     public static void main(String[] args){
13         String resource="com/luohao/config/MyBatisConfig.xml";//对应的配置文件路径
14         InputStream inputStream = null;
15         try {
16             inputStream = Resources.getResourceAsStream(resource);
17         } catch (IOException e) {
18             e.printStackTrace();
19         }
20         //建立SQLSession工厂
21         SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
22         SqlSession session=sqlSessionFactory.openSession();
23         String statment ="com.luohao.config.userMapper.Username"; //这里的Username对应的是Mapper里的id,之后的selectOne方法可以映射到SQL语句中
24         User user=session.selectOne(statment,"luohao");
25         System.out.println(user.getEmail());
26     }
27 }

之后的user类就不多说了,是get和set方法。

这就是一个比较简单的MyBatis的Demo.

时间: 2024-11-14 12:34:26

MyBatis学习笔记(一)的相关文章

MyBatis:学习笔记(3)——关联查询

MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统,如果我们将用户信息和订单信息都保存在user表中,这样就不存在联结关系,因为我们仅仅操作一张表就好. 但是这是非常不明智的选择,举例来说,一个用户可以拥有多个订单,如果保存在一个表中,势必会导致用户信息的多次出现,因为每个订单绑定的用户信息都是相同的. 所以我们尽量要将不同的信息存储与不同的表中,但

mybatis学习笔记(1)

之前做项目的时候,DAO层写了一些spring jdbc,用起来的确不是很方便,今天特意去学习了新的框架:mybatis.把之前用spring-jdbc写的内容换成了mybatis框架搭建的内容. 首先你要到mybatis的官网去下mybatis的jar包:mybatis-3.2.7.jar.由于我是在spring的基础上去搭建mybatis所以还要去弄一个mybatis-spring-1.2.2.jar, 这个连接的包好像在spring官方是找不到的,需要自己去网上找. 进入正题.首先在src

Mybatis学习笔记(二) 之实现数据库的增删改查

开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载.首先建立一个名字为 MyBaits 的 dynamic web project 1. 可以创建maven项目,依赖的包mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar <!-- mybatis包 --> <depe

MyBatis MapperScannerConfigurer配置――MyBatis学习笔记之八

MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八 2012-09-02 20:01:42 标签:Spring MyBatis MapperScannerConfigurer bean默认命名 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://legend2011.blog.51cto.com/3018495/980150 在上一篇博文的示例中,我们在beans.xml中配置了stu

mybatis学习笔记(9)-订单商品数据模型分析

mybatis学习笔记(9)-订单商品数据模型分析 mybatis学习笔记9-订单商品数据模型分析 数据模型分析思路 数据模型分析 订单商品数据模型建表sql 本文对接下来几篇博客中用到的数据模型进行分析,并附上建表sql文件和测试数据文件 数据模型分析思路 每张表记录的数据内容 分模块对每张表记录的内容进行熟悉,相当于你学习系统需求(功能)的过程. 每张表重要的字段设置 非空字段.外键字段 数据库级别表与表之间的关系 外键关系 表与表之间的业务关系 在分析表与表之间的业务关系时一定要建立在某个

mybatis学习笔记(11)-多对多查询

mybatis学习笔记(11)-多对多查询 mybatis学习笔记11-多对多查询 示例 多对多查询总结 resultMap总结 本文实现多对多查询,查询用户及用户购买商品信息. 示例 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表:orders.orderdetail.items sql SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdeta

mybatis学习笔记(11)-一对多查询

mybatis学习笔记(11)-一对多查询 mybatis学习笔记11-一对多查询 示例 小结 本文实现一对多查询,查询订单及订单明细的信息 示例 sql 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.item

mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现

项目结构  基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/MybatisUtil.java package util; import java.io.InputStream; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; i

springmvc+mybatis学习笔记(汇总)

springmvc+mybatis学习笔记(汇总) 标签 : springmvc mybaits springmvcmybatis学习笔记汇总 目录 联系作者 笔记分为两大部分:mybatis和springmvc mybatis springmvc 笔记内容主要是mybatis和springmvc的一些基本概念和使用方法,涉及概念介绍.环境搭建.编程细节.运行调试等方面. 这套笔记整体偏入门和应用,适合快速上手,对底层实现和机理并未做过多分析.我后续会研读spring源码,并把学习的收获写成博客

mybatis学习笔记(13)-查询缓存之二级缓存

mybatis学习笔记(13)-查询缓存之二级缓存 mybatis学习笔记13-查询缓存之二级缓存 二级缓存原理 开启二级缓存 调用pojo类实现序列化接口 测试方法 useCache配置 刷新缓存就是清空缓存 应用场景和局限性 本文主要讲mybatis的二级缓存,二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的. 二级缓存原理 首先开启mybatis的二级缓存. sqlS