一、mybatis介绍

是apache旗下的一个开源的顶级ORM框架(做dao层的操作)

开始叫ibatis在2010年经过升级后发布到google code上就改名为mybatis

定位:1.是一个做持久层操作的框架

2.是一个半自动的ORM框架

二、原生态的jdbc存在的问题

问题一:频繁的创建和销毁连接,造成了资源浪费,影响了系统的性能。

解决方案设想:连接池(c3p0、dbcp、阿里巴巴)

问题二:sql语句硬编码(写死了)

解决方案设想:将sql语句写入到mapper.xml文件中

问题三:sql语句中的参数硬编码

解决方案设想:将sql语句中参数写入到mapper.xml文件中

问题四:查询的结果返回的是一个结果集,而我们更希望返回是对象

解决方案设想:查询后自动返回对象

三、mybatis的原理(核心)

四、mybatis环境搭建

4.1、准备开发环境

1、创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示:

  

2、添加相应的jar包(mybatis的核心包+依赖jar包+mysql驱动包)

也要在src文件里添加log4j的配置文件,用于显示执行记录

   

3、创建数据库和表,针对MySQL数据库

 请自己按照实体类(pojo)进行编写数据库

4.2、使用MyBatis查询表中的数据的配置

  1、添加Mybatis的配置文件SqlMapConfig.xml

  在src目录下创建一个SqlMapConfig.xml文件,如下图所示:

  

  SqlMapConfig.xml文件中的内容如下:

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <properties resource="basedao.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${user}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- 加载mapper.xml文件 -->
<mappers>
<package name="org.maven.mapper"/>
</mappers>
</configuration>

  将basedao.properties文件放到src目录下:

  

2、定义表所对应的实体类,如下图所示:

  

  User类的代码如下:

 package org.java.pojo;

 /**
* 1.请各位在入门的时候实体类中字段名和数据库中表的列名对应(不区分大小写)--讲解输出映射的时候解释
* 2.在ssm框架开发过程中,所有的日期类型请使用java.util.Date;因为这样才能在springMVC中参数绑定
*/
public class User {
private Integer id;
private String name;
private String password;
//GET,set请自行添加
}

  3、定义操作users表的sql映射文件userMapper.xml

  创建一个包,专门用于存放sql映射文件,在包中创建一个userMapper.xml文件,如下图所示:

  

  userMapper.xml文件的内容如下:

 <?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">
<!-- namespace:名字空间
如果在ibatis的开发中可以随便写,但是在mybatis的开发中有特殊含义,必须为对应接口的全限定名
-->
<mapper namespace="org.java.mapper.UserMapper"> </mapper>

  4、在SqlMapConfig.xml文件中加载userMapper.xml文件

四、mybatis入门程序

1、在userMapper.xml里编写增删改查

  

<?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">
<!-- namespace:名字空间
如果在ibatis的开发中可以随便写,但是在mybatis的开发中有特殊含义,必须为对应接口的全限定名
-->
<mapper namespace="org.java.mapper.UserMapper">
<!-- 1.根据主键查询
select:用来查询的statement(标签)
id:用来唯一的标识该mapper里面的statement(标签)
parameterType:输入参数的类型
#{}:占位符,如果输入参数类型为简单类型,那么#{可以写任意的名字}
resultType:返回结果的类型(即返回类型的全限定名)
-->
<select id="getById" parameterType="Integer" resultType="org.java.pojo.User">
SELECT * FROM USER WHERE id= #{abc}
<!-- 根据姓名做模糊查询 要用占位符是:${},如果查询是简单类型,必须为${value} 但存在sql注入问题-->
</select>
<select id="getByName" parameterType="String" resultType="org.java.pojo.User">
SELECT * FROM USER WHERE name like '%${name}%'
</select>
</mapper>

2.在对应的接口类里添加对应的方法:

package org.java.mapper;

import java.util.List;
import org.java.pojo.User; public interface UserMapper {
/*
* 方法名必须和对应的xml里statement标签id名一致
* 输入参数类型和返回类型也要和标签里的一致
*/
User getById(Integer id);
//根据姓名做模糊查询
List<User> getByName(String name); }

3.使用junit进行测试

package org.java.mapper;

import static org.junit.Assert.*;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.java.pojo.User;
import org.java.tools.myUtils;
import org.junit.Before;
import org.junit.Test; public class UserMapperTest {
SqlSession sqlSession =null;
UserMapper userMapper=null;
@Before
//执行任何方法时先执行该方法
public void upset() throws Exception{ sqlSession=myUtils.getsqlsession();
userMapper=sqlSession.getMapper(UserMapper.class);
} @Test
public void testGetById() {
System.out.println(userMapper.getById(1).getName());
} @Test
public void testGetByName() {
List<User> list=userMapper.getByName("a");
System.out.println(list.size());
} }

测试结果

mybatis之入门的更多相关文章

  1. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  2. MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  3. MyBatis学习总结(一)——MyBatis快速入门(转载)

    本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...

  4. MyBatis入门学习教程-MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  5. MyBatis学习总结(一)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  6. 【转】MyBatis学习总结(一)——MyBatis快速入门

    [转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...

  7. mybatis快速入门(六)

    前面mybatis的入门程序基本上都写完了,就看大家的灵活运用了,今天来吧前面的整合一下封装一个公共的BaseDao 只需要把前面的改造下然后创建一个BaseDao的接口,其它的继承BaseDao接口 ...

  8. MyBatis学习总结-MyBatis快速入门的系列教程

    MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...

  9. MyBatis基础入门《二十》动态SQL(foreach)

    MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...

  10. MyBatis基础入门《十九》动态SQL(set,trim)

    MyBatis基础入门<十九>动态SQL(set,trim) 描述: 1. 问题 : 更新用户表数据时,若某个参数为null时,会导致更新错误 2. 分析: 正确结果: 若某个参数为nul ...

随机推荐

  1. [OSX] 在 OS X 中安装 MacPorts 指南

    什么是MacPorts? MacPorts是使用于Mac OS中第三方包管理工具. MacPorts让你可以轻松编译.安装和管理开源软件.MacPorts可以分为两个核心部分:MacPort base ...

  2. 开启mysql远程连接访问权限的几种方法

    1.改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 " ...

  3. Mac下安装和卸载MySQL(含配置)

     安装 首先需要下载 MySQL Community Server 下载地址:https://dev.mysql.com/downloads/mysql/ 进入MySQL的下载界面(https://d ...

  4. 解决Sublime Text 3中文显示乱码问题(转)

    解决Sublime Text 3中文显示乱码问题(转) 1.打开Sublime Text 3,按Ctrl+-打开控制行,复制粘贴以下python代码,然后回车运行. 2. 复制并粘贴如下代码: 2.重 ...

  5. chattr lsattr

    chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTt ...

  6. 【linux】 scrapy : Could not find a version that satisfies the requirement Twisted>=13.1.0 (from Scrapy) (from versions: )

    centos7 + python3 安装 scrapy 时候报错,错误信息如下: Could not find a version that satisfies the requirement Twi ...

  7. Android.mk (1) 函数

    https://www.jianshu.com/p/46224d15fc5f 从函数说起 大家都习惯看从头,从构建目标讲起的,导致每篇文档熟的都是前面的部分.很多教程也都是想办法能够观其大略,从整体上 ...

  8. Spark学习笔记--Linux安装Spark集群详解

    本文主要讲解如何在Linux环境下安装Spark集群,安装之前我们需要Linux已经安装了JDK和Scala,因为Spark集群依赖这些.下面就如何安装Spark进行讲解说明. 一.安装环境 操作系统 ...

  9. ftp主动与被动模式区别

    FTP是仅基于TCP的服务,不支持UDP.与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口).通常来说这两个端口是21(命令端口)和20(数据端口).但FTP工作方式的不同 ...

  10. X-Requested-With导致CSRF失败

    在漫漫渗透之路中,眼前一亮的发现一个站.Referer字段没有检查,POST参数中的动态token也没有检查,这不是带一波CSRF的节奏嘛.但是遇到一个之前我没遇到的问题导致我CSRF失败,这个问题或 ...