Mybatis的详细使用教程

Mybatis所需要的jar包:

需要引用两个jar包,一个是mybatis,另一个是MySQL-connector-Java,如果是maven工程的话,pom里如下添加依赖就可以了。

<dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis</artifactId>
 <version>3.2.3</version>
</dependency>
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.26</version>
</dependency>

数据准备:

在MySQL中造点数据进行测试用:

CREATE DATABASE mybatis_test;
CREATE TABLE user
(
 age INTEGER NOT NULL,
 name VARCHAR(64) NOT NULL DEFAULT ''
);
insert user values(18,'zhanjindong');
insert user values(20,'zhangsan');

配置文件:

需要两类配置文件,一类是MyBatis的配置文件mybatis-config.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>
 <settings>
  <!-- changes from the defaults for testing -->
  <setting name="cacheEnabled" value="false" />
  <setting name="useGeneratedKeys" value="true" />
  <setting name="defaultExecutorType" value="REUSE" />
 </settings>
 <typeAliases>
  <typeAlias alias="User" type="test.mybatis.User"/>
 </typeAliases>
 <environments default="development">
  <environment id="development">
   <transactionManager type="jdbc"/>
   <dataSource type="POOLED">
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://192.168.71.38:3306/mybatis_test"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
   </dataSource>
  </environment>
 </environments>
 <mappers>
  <mapper resource="mappers/UserMapper.xml" />
 </mappers>
</configuration>

另一类是数据访问接口映射文件:示例中是UserMapper.xml。这个文件一般放在src/main/resource下面或子目录下mybatis就可以找到了,在mybatis-config.xml中由mappers/mapper节点的resource指定。

<?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="test.mybatis.UserMapper">
 <!-- 这里namespace必须是UserMapper接口的路径” -->
 <insert id="insertUser" parameterType="User">
  insert into user(name,age) values(#{name},#{age})
  <!-- 这里sql结尾不能加分号,否则报“ORA-00911”的错误 -->
 </insert>
 <!-- 这里的id必须和UserMapper接口中的接口方法名相同 -->
 <select id="getUser" resultType="User" parameterType="java.lang.String">
  select * from user where name=#{name}
 </select>
</mapper>

对应这个映射文件就是test.mybatis这个命名空间下的UserMapper这个接口,只是定义了访问数据表的接口:

package test.mybatis;
public interface UserMapper {
 public void insertUser(User user);
 public User getUser(String name);
}

需要一个POJO:User.java

package test.mybatis;
public class User {
 private String name;
 private Integer age;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public User(String name, Integer age) {
  super();
  this.name = name;
  this.age = age;
 }
 public User() {
  super();
 }
}

测试:

通过MyBatis操作数据库用到的是一个叫SqlSession的类,这个类是通过SqlSessionFactory产生的,一般建议在全局维护一个SqlSessionFactory就可以了。

TestMyBatis.java
package test.mybatis;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisUtil {
 private final static SqlSessionFactory sqlSessionFactory;
 static {
  String resource = "mybatis-config.xml";
  Reader reader = null;
  try {
   reader = Resources.getResourceAsReader(resource);
  } catch (IOException e) {
   System.out.println(e.getMessage());
  }
  sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
 }
 public static SqlSessionFactory getSqlSessionFactory() {
  return sqlSessionFactory;
 }
}

测试代码如下:

TestMyBatis.java
package test.mybatis;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class TestMyBatis {
 static SqlSessionFactory sqlSessionFactory = null;
 static {
  sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
 }
 public static void main(String[] args) {
  testAdd();
  getUser();
 }
 public static void testAdd() {
  SqlSession sqlSession = sqlSessionFactory.openSession();
  try {
   UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
   User user = new User("lisi", new Integer(25));
   userMapper.insertUser(user);
   sqlSession.commit();// 这里一定要提交,不然数据进不去数据库中
  } finally {
   sqlSession.close();
  }
 }
 public static void getUser() {
  SqlSession sqlSession = sqlSessionFactory.openSession();
  try {
   UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
   User user = userMapper.getUser("zhangsan");
   System.out.println("name: " + user.getName() + "|age: "
     + user.getAge());
  } finally {
   sqlSession.close();
  }
 }
}

1、mybatis会用log4j记录日志,但是开启debug模式貌似对性能影响非常厉害。

2、mybatis的查询缓存对性能的影响非常大,启用和不启用差距非常大

以上所述是小编给大家介绍的Mybatis的详细使用教程,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • MyBatis入门初体验之使用大全(2)

    MyBatis简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO) 1.所需jar包

  • MyBatis Generator生成代码及使用方式详解

    为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,ORM 的出现就是为了简化开发.最初的开发方式是业务逻辑和数据库查询逻辑是分开的,或者在程序中编写 sql 语句,或者调用 sql 存储过程.这样导致思维需要在语言逻辑和 sql 逻辑之间切换,导致开发效率低下.所以出现了一系列的 ORM 框架,ORM 框架将数据库表和 Java 对象对应起来,当操作数据库时,只需要操作对象的 Java 对象即可,例如设置几个 and 条件,只需要设置几个属性即可. 为什么要有myba

  • 详解Java的MyBatis框架中的缓存与缓存的使用改进

    一级缓存与二级缓存 MyBatis将数据缓存设计成两级结构,分为一级缓存.二级缓存: 一级缓存是Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存.一级缓存是MyBatis内部实现的一个特性,用户不能配置,默认情况下自动支持的缓存,用户没有定制它的权利(不过这也不是绝对的,可以通过开发插件对它进行修改): 二级缓存是Application应用级别的缓存,它的是生命周期很长,跟Application的声明周期一样,也就是说它的作用范围是整个App

  • Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Mapper的内置方法 model层就是实体类,对应数据库的表.controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action.Service层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接.至于Mapper是mybtis框架的映射用到,mapper映射文件在dao层用. 下面是介绍一下Mapper的内置方法: 1.countByExample ===>根据条件查询数量 int countByExample(UserE

  • oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert

    最近做项目遇到一个挺纠结的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰. 先来看一下最终我是怎么实现的: <insert id="batchInsertLine" parameterType="HashMap"> <![CDATA[ INSERT INTO tg_fcst_lines(${lineColumn}) select result.*,sq_fcst_lines.next

  • MyBatis中使用$和#所遇到的问题及解决办法

    在上篇文章给大家介绍了Mybatis中#{}和${}传参的区别及#和$的区别小结,如果大家有需要可以参考下. $和#简单说明: #相当于对数据 加上 双引号,$相当于直接显示数据. 一.总结 mybatis中使用sqlMap进行sql查询时,经常需要动态传递参数.动态SQL是mybatis的强大特性之一,也是它优于其他ORM框架的一个重要原因.mybatis在对sql语句进行预编译之前,会对sql进行动态解析,解析为一个BoundSql对象,也是在此处对动态SQL进行处理的.在动态 SQL 解析

  • Mybatis的详细使用教程

    Mybatis所需要的jar包: 需要引用两个jar包,一个是mybatis,另一个是MySQL-connector-Java,如果是maven工程的话,pom里如下添加依赖就可以了. <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.3</version> </dependency>

  • Spring+SpringMVC+MyBatis整合详细教程(SSM)

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些.以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下.这次,先说说三大框架整合过程.个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助.不过,如果用都不会,谈思想就

  • SpringBoot整合MyBatis超详细教程

    1.整合MyBatis操作 前面一篇提到了SpringBoot整合基础的数据源JDBC.Druid操作,实际项目中更常用的还是MyBatis框架,而SpringBoot整合MyBatis进行CRUD也非常方便. 下面从配置模式.注解模式.混合模式三个方面进行说明MyBatis与SpringBoot的整合. 1.1.配置模式 MyBatis配置模式是指使用mybatis配置文件的方式与SpringBoot进行整合,相对应的就有mybatis-config.xml(用于配置驼峰命名,也可以省略这个文

  • Java持久层框架Mybatis入门详细教程

    mybatis介绍 mybatis它是轻量级持久层框架,由ibatis演化而来.它自动连接数据库,将数据库的结果集封装到对象中POJO. POJO: 一个简单的Java类,这个类没有实现/继承任何特殊的java接口或者类,不遵循任何主要java模型,约定或者框架的java对象.在理想情况下,POJO不应该有注解. JavaBean: JavaBean是可序列化的,实现了serializable接口 具有一个无参构造器 有按照命名规范的set和gett,is(可以用于访问布尔类型的属性)方法 My

  • springboot集成Mybatis的详细教程

    springboot集成Mybatis 第一步: 添加Mybatis依赖 <!--mybatis整合springboot框架的起步依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> &l

  • 使用IDEA搭建ssm框架的详细图文教程

    ssm(spring springMVC mybatis) 1.创建项目 file->new->project 2.新建的maven项目目录结构 添加ssm需要的文件夹等 如果去掉java文件夹的蓝色标志,会发现这里new时不能创建java类或包 如果main/java前不是蓝色文件夹或test/java前不是绿色文件夹,可以这样添加 3.加入maven依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?

  • 基于maven搭建一个ssm的web项目的详细图文教程

    1:使用idea建立一个web项目 2:引入pom依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.

  • SpringBoot MyBatis保姆级整合教程

    目录 Spring Boot整合MyBatis 数据准备 创建项目引入相应的启动器 编写与数据库表 编写配置文件 注解方式整合Mybatis 配置文件的方式整合MyBatis 创建接口类 创建XML映射文件 配置XML映射文件路径 编写单元测试进行接口方法测试 Spring Boot整合MyBatis MyBatis 是一款优秀的持久层框架,Spring Boot官方虽然没有对MyBatis进行整合,但是MyBatis团队自行适配了对应的启动器,进一步简化了使用MyBatis进行数据的操作 基础

  • ftp服务器FileZilla Server详细配置教程

    FileZilla Server下载安装完成后,必须启动软件进行设置,由于此软件是英文,本来就是一款陌生的软件,再加上英文,配置难度可想而知,小编从网上找到一篇非常详细的教程进行整理了一番,确保读到这篇教程的同学都能够进行免费ftp服务器FileZilla Server配置. 运行FileZilla Server Interface.exe,得到以上界面,如果是第一次进入,直接点击ok即可.我们可以在「Administrator password:」栏位中输入本服务器Filezilla服务的密码

  • mybatis原理概述入门教程

    本文我将要介绍一下mybatis的框架原理,以及mybatis的入门程序,实现用户的增删改查,她有什么优缺点以及mybatis和hibernate之间存在着怎么样的关系,希望对小伙伴们有帮助,不足之处,还请多多指教. 什么是mybatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. MyBatis 是支持定

随机推荐