`
wx1568908808
  • 浏览: 31413 次
文章分类
社区版块
存档分类
最新评论

mybatis

 
阅读更多

@[toc]

mybatis概念

  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

mybatis和hibernate的比较

mybatis hibernate
半自动化ORM框架 全自动ORM框架
必须写SQL 可以不写SQL
事务处理 事务处理
缓存支持 缓存都支持,二级缓存比mybatis好

案例

1、创建Maven(类型是jar)

在这里插入图片描述

2、添加对象的jar

<dependencies>
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.4.6</version>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.27</version>
	</dependency>
</dependencies>

3、创建全局配置文件

在这里插入图片描述

<?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>
  <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://localhost:3306/demo?characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value="1234"/>
      </dataSource>
    </environment>
  </environments>
  	<mappers >
  		<mapper resource="com/sxt/bean/UserMapper.xml"/>
  	</mappers>
</configuration>

4、定义User对象

在这里插入图片描述

5、创建映射文件

<?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="com.sxt.bean.User">
  		<select id="qeury" resultType="com.sxt.bean.User">
  			select * from t_user
  		</select>
  </mapper>

6、将映射文件添加到主配置文件中

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190425101945674.png

	<mappers >
  		<mapper resource="com/sxt/bean/UserMapper.xml"/>
  	</mappers>

7、测试

@Test
	public void test() throws IOException {
		// 加载配置文件
		InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
		// 获取SqlSessionFactory
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		// 获取sqlsession对象
		SqlSession session = factory.openSession();
		// namespace+id 定位要执行的sql语句
		List<User> list = session.selectList("com.sxt.bean.User.qeury");

		for (User user : list) {
			System.out.println(user);
		}
		session.close();
	}

在这里插入图片描述

增、删、修改操作

映射文件设置
<mapper namespace="com.sxt.bean.User">
  		<select id="qeury" resultType="com.sxt.bean.User">
  			select * from t_user
  		</select>
  		<insert id="insert" parameterType="com.sxt.bean.User">
  			insert into t_user(username,password) values(#{username},#{password})
  		</insert>
  		<update id="update" parameterType="com.sxt.bean.User">
  			update t_user set username=#{username},password=#{password} where id=#{id}
  		</update>
  		<delete id="delete">
  			delete from t_user where id=#{id}
  		</delete>
  </mapper>

案例优化

1.获取SqlSessionFactory对象的方式

public class Dbutils {
	public static SqlSession getsession() {
		try {
			InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
			return factory.openSession();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
}

整理CRUD

package com.sxt.dao;

import java.util.List;

import com.sxt.bean.User;

public interface IUserDao {
	public List<User> query();

	public int insert(User user);

	public int update(User use);

	public int delete(Integer  id);
}


public class UserDaoImpl extends Dbutils implements IUserDao {

	@Override
	public List<User> query() {
		
		return getsession().selectList("com.sxt.bean.User.qeury");
	}

	@Override
	public int insert(User user) {
		// TODO Auto-generated method stub
		return getsession().insert("com.sxt.bean.User.insert", user);
	}

	@Override
	public int update(User user) {
		// TODO Auto-generated method stub
		return getsession().update("com.sxt.bean.User.update", user);
	}

	@Override
	public int delete(Integer id) {
		// TODO Auto-generated method stub
		return getsession().delete("com.sxt.bean.User.delete",id);
	}

}

再次整理

把映射配置放在dao层 在这里插入图片描述

public interface IUserDao {
	public List<User> query();

	public int insert(User user);

	public int update(User use);

	public int delete(Integer  id);
}

@Test
	public void test() {
		IUserDao dao=(IUserDao) Proxy.newProxyInstance(
				test.class.getClassLoader(), 
				new Class[]{IUserDao.class}, 
				new InvocationHandler() {
					
					@Override
					public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
						SqlSession session = Dbutils.getsession();
						if ("query".equals(method.getName())) {
							//查询
							return session.selectList("com.sxt.dao.IUserDao."+method.getName());
						}
						return null;
					}
				}
				);
		List<User> list = dao.query();
		for (User user : list) {
			System.out.println(user);
		}
		//dao.delete(4);
	}

在这里插入图片描述

使用 Mapper接口

@Test
	public void test() {
		SqlSession session = Dbutils.getsession();
		IUserDao userDao = session.getMapper(IUserDao.class);
		List<User> list = userDao.query();
		for (User user : list) {
			System.out.println(user);
		}
	}

使用mapper注意事项

序号 注意点
1 映射文件的namespace的值必须是接口的全路径名称 比如:com.dpb.dao.UserMapper
2 接口中的方法名在映射文件中必须有一个id值与之对应。
3 映射文件的名称必须和接口的名称一致

转载于:https://my.oschina.net/u/4116634/blog/3042495

分享到:
评论

相关推荐

    Spring+SpringMVC+Mybatis框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    MybatisGenerate_代码生成_tkMybatis_mybatisgenerate_mybatis_

    MybatisGenerate是一个强大的工具,主要用于自动化生成Mybatis相关的代码,以提高开发效率并减少手动编写重复性工作的负担。这个工具是基于tk.mybatis框架的,它整合了Mybatis的优秀特性,使得开发者能够更加便捷地...

    mybatis的中文api文档

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...

    mybatis3.5.7.zip

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...

    mybatis-3-mybatis-3.2.6

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.2.6版本的源码之前,我们首先需要了解MyBatis的基本概念和功能。 MyBatis的核心部分主要包括SqlSessionFactory、...

    mybatis中文离线文档

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...

    高效数据脱敏工具 - MyBatis-Cipher,基于MyBatis的数据库敏感信息加密解密方案

    项目名称:MyBatis-Cipher - 高效数据脱敏工具 项目简介: MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行...

    【狂神说】mybatis学习总结笔记(全)PDF格式文档 MyBatis.pdf

    MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...

    mybatisx.zip

    这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...

    MyBatis-Plus入门+MyBatis-Plus文档手册 中文pdf高清版.rar

    mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...

    IDEA的MyBatis插件两个

    本篇文章将详细介绍两个针对MyBatis框架的IntelliJ IDEA插件——MyBatisCodeHelper-Pro和MybatisX,它们都是为了提升MyBatis开发体验而设计的。 首先,我们来看MyBatisCodeHelper-Pro。这款插件是专为MyBatis开发者...

    MyBatis-Flex: 一个优雅的 MyBatis 增强框架

    MyBatis-Flex: 一个优雅的 MyBatis 增强框架。很轻量,MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的...

    MyBatis3官方中文文档

    MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...

    MyBatis入门到精通

    MyBatis是一款强大的Java持久层框架,它将SQL与Java代码分离,使开发者可以更方便地操作数据库。这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. *...

    MyBatis入门.pdf

    MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...

    MyBatis-3.4.6.zip

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...

    MyBatis-Plus 的官方示例(mybatis-plus-samples-master.zip)

    本工程为 MyBatis-Plus 的官方示例,项目结构如下: mybatis-plus-sample-quickstart: 快速开始示例 mybatis-plus-sample-quickstart-springmvc: 快速开始示例(Spring MVC版本) mybatis-plus-sample-reduce-...

    基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密

    "基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk MyBatis是MyBatis的增强工具,...

Global site tag (gtag.js) - Google Analytics