Mybatis 开发注解快速入门_java

快速普及

1、mybatis是什么

      mybatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。

      MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
Mybatis实现了接口绑定,使用更加方便。

对象关系映射的改进,效率更高

MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。

2、功能架构

3、执行流程

原理详解:

       MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。

下面看下本文介绍重点mybatis 简单注解

关键注解词 :

@Insert : 插入sql , 和xml insert sql语法完全一样

@Select : 查询sql, 和xml select sql语法完全一样

@Update : 更新sql, 和xml update sql语法完全一样

@Delete : 删除sql, 和xml delete sql语法完全一样

@Param : 入参

@Results : 结果集合

@Result : 结果

1、领域模型 :

public class UserDO {
private Long id;
private String userName;
private Date gmtCreate;
private Date gmtModified;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getGmtCreate() {
return gmtCreate;
}
public void setGmtCreate(Date gmtCreate) {
this.gmtCreate = gmtCreate;
}
public Date getGmtModified() {
return gmtModified;
}
public void setGmtModified(Date gmtModified) {
this.gmtModified = gmtModified;
}
}

2、接口定义 :

public interface UserDAO {
@Insert("INSERT INTO t_user(gmt_create, gmt_modified, user_name) values(now(), now(), #{userName})")
public int insert(@Param("userName") String userName);
  @Select("SELECT * FROM t_user WHERE id = #{id}")
public UserDO selectByUserId(@Param("id") Long id) ;
@Update("UPDATE t_user SET gmt_modified = now(), user_name = #{userName} WHERE id = #{id}")
public int udpateById(@Param("userName") String userName, @Param("id") Long id) ;
@Delete("DELETE FROM t_user WHERE id = #{id}")
public int udpateById(@Param("id") Long id) ;  
}

3、mybatis xml config:

<!-- mybatis 注解 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="mysqlBASE" /> <!--这里只需要配置你自己的数据源即可-->
</bean>
  <bean id="userDAO" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.yuanmeng.userDAO" /> <!--mybatis接口-->
     <property name="sqlSessionFactory" ref="sqlSessionFactory" /> <!--sqlSession工厂-->
  </bean>

这样,我们就完成了mybatis 使用注解的demo, 是不是觉得很简单 ~~

如果熟悉mybatis xml的话, 大多数情况下, 我们需要将数据库表的字段名 与 class DO 映射起来。mybatis注解也提供了映射的功能, 语法大同小异。

@Select("SELECT * FROM tsp_template WHERE id = #{id}")
@Results(value = { @Result(property = "userName", column = "user_name", javaType = String.class, jdbcType = JdbcType.VARCHAR) })
public UserDO selectById(@Param("id") Long id);

当然, 上述只是再不能简单的sql了。想想如果我们有这种需求, 更新用户信息, 希望能更新指定的属性值, 换而言之, 像xml 一样动态生成SQL 。 那我们就不能简单粗暴使用 @update 注解 。好在 强大的mybatis 也提供了动态SQL的组装。

动态SQL

 对应关系如下

@Insert :@InsertProvider
@Select :@SelectProvider
@Update :@UpdateProvider
@Delete :@DeleteProvider

四个provider注解标识 使用了动态SQL, 使用语法格式 :

@UpdateProvider(type = UserProvider.class, method = "updateSQL")

如何构造动态SQL

public class UserProvider {
/**
* udpate
* @param UserDO userDO
* @return
*/
public String updateSQL(final UserDO userDO) {
return new SQL() {
{
UPDATE("t_user");
SET("gmt_modified = now()");
if (userDO.getUserName() != null) {
SET("user_name = #{userName}");
}
WHERE("id = #{id}}");
}
}.toString();
}
}

本文提到的知识点比较基础, 如需深入了解见官网文档or看下源码。

总结 :

  1、xml 和 注解 如何选择 ? 因人而异, 每个人的撸码各有各的习惯, xml 、注解各有优缺点, xml的缺点 : 当模型属性有变更时, 需要从DO改到DAO改到xml, 想想就蛋疼了~ xml也有优点 , SQL片段复用方便, 语法平易近人, 不像注解, 构造个动态语句, 还得建个类, 而且当一段SQL被多处引用时, 代码就显得冗余了, 这时必须借助 xml来抽取共同使用。吐槽了下mybatis注解, 那注解岂不是毫无用处。 no , mybatis 适合模型属性经常变更的场景, 因为可以结合反射, 正则匹配动态构造SQL(纯粹瞎歪歪, 个人想法, 应该可以实现, 改天撸一发)。可以说, mybatis的注解 优点 很好弥补了 xml缺点。两者互补~

以上所述是小编给大家介绍的Mybatis 开发注解快速入门,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mybatis
注解
mybatis注解开发、mybatis注解开发实例、mybatis快速入门、ios 7开发快速入门、scala开发快速入门,以便于您获取更多的相关知识。

时间: 2024-12-06 11:48:42

Mybatis 开发注解快速入门_java的相关文章

Android注解快速入门和实用解析

本文讲的是Android注解快速入门和实用解析,首先什么是注解?@Override就是注解,它的作用是: 检查是否正确的重写了父类中的方法. 标明代码,这是一个重写的方法. 1.体现在于:检查子类重写的方法名与参数类型是否正确;检查方法private/final/static等不能被重写.实际上@Override对于应用程序并没有实际影响,从它的源码中可以出来. 2.主要是表现出代码的可读性. 作为Android开发中熟知的注解,Override只是注解的一种体现,更多时候,注解还有以下作用:

MyBatis入门学习教程(一)-MyBatis快速入门_java

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

使用Eclipse开发JPA快速入门

Eclipse工程下的wtp项目包括一个新的开发视图--JPA(Java Persistence API). JPA(Java Persistence API)是 EJB 3.0 新引入的数据持久化编程模型.JPA 充分利用了注释(Annotation)和对象 / 关系映射,为数据持久化提供了更简单.易用的编程方式.OpenJPA 是 Apache 组织提供的 JPA 标准实现. Dali JPA Tools 是由 Eclipse.org 推出.支持 JPA 项目开发的插件,主要目标是为用户开发

Tiny快速入门之控制层开发

一.通过代码编写控制层逻辑 1.代码示例 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 @Controller() public class HelloAction implements WebContextAware{       private WebContext webContext;           public void setContext(WebContext webContext) {         this.webC

MyBatis快速入门(简明浅析易懂)_java

一.MyBatis简介 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架. MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装. MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. JDBC -> dbutils(自动封装) -> MyBatis -> Hibernate mybatis是将sql写在xml中,然

Mybatis实战教程之入门到精通(经典)_java

什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到 ses

《R语言游戏数据分析与挖掘》一2.1 开发环境准备和快速入门

2.1 开发环境准备和快速入门 2.1.1 R语言简介 R语言的前身是S语言,S语言是由AT &T Bell实验室的Rick Becker.John Chambers和Allan Wilks开发的一种用来进行数据探索.统计分析.作图的解释型语言.最初S语言的实现版本主要是S-PLUS.S-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善.而R语言最初由来自新西兰大学的Ross Ihaka和Robert Gentleman开发(由于他们的名字都以R开头,所以该软

Spring MVC 开发快速入门

快速入门 这篇文章将教你快速地上手使用 Spring 框架,如果你手上有一本<Spring in Action>, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求

《iOS9开发快速入门》——第1章,第1.1节iOS 9新特性

1.1 iOS 9新特性 iOS9开发快速入门 2015年6月,苹果公司发布了最新的iOS 9操作系统,该系统在上一版的基础上做了很多的改进.本节将讲解iOS 9带来的新特性以及改进. 1.1.1 Siri语音助手智能化 Siri语音助手的智能性能主要表现在强大的内容检索和管理方面,支持快速自动整理历史文档:根据使用场景的不同,为用户提供内容和服务:来电联系人匹配,相关内容推荐甚至是第三方应用的内容检索.具体到使用场景方面,Siri可以自动整理历史照片.联系人历史邮件往来.健身应用下接入电源开启