@[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、将映射文件添加到主配置文件中
<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 |
映射文件的名称必须和接口的名称一致 |
相关推荐
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
MybatisGenerate是一个强大的工具,主要用于自动化生成Mybatis相关的代码,以提高开发效率并减少手动编写重复性工作的负担。这个工具是基于tk.mybatis框架的,它整合了Mybatis的优秀特性,使得开发者能够更加便捷地...
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.2.6版本的源码之前,我们首先需要了解MyBatis的基本概念和功能。 MyBatis的核心部分主要包括SqlSessionFactory、...
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-Cipher - 高效数据脱敏工具 项目简介: MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行...
MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...
这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...
在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...
本篇文章将详细介绍两个针对MyBatis框架的IntelliJ IDEA插件——MyBatisCodeHelper-Pro和MybatisX,它们都是为了提升MyBatis开发体验而设计的。 首先,我们来看MyBatisCodeHelper-Pro。这款插件是专为MyBatis开发者...
MyBatis-Flex: 一个优雅的 MyBatis 增强框架。很轻量,MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的...
MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...
MyBatis是一款强大的Java持久层框架,它将SQL与Java代码分离,使开发者可以更方便地操作数据库。这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. *...
MyBatis入门 MyBatis是一个优秀的持久层框架,使用XML将SQL与程序解耦,便于维护。MyBatis学习简单,执行高效,是JDBC的延伸。MyBatis提供了数据库增删改查的便捷操作,极大提高了开发效率、统一的编码规则、利于...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
本工程为 MyBatis-Plus 的官方示例,项目结构如下: mybatis-plus-sample-quickstart: 快速开始示例 mybatis-plus-sample-quickstart-springmvc: 快速开始示例(Spring MVC版本) mybatis-plus-sample-reduce-...
"基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk MyBatis是MyBatis的增强工具,...