• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > MyBatis 使用权威指南

MyBatis 使用权威指南

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了mybatis权威指南,mybatis用户指南,mybatis使用,mybatis使用教程,mybatis使用注解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

什么是 MyBatis

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

SpringBoot 中使用

使用 Maven

在你的pom.xml中:

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>1.2.1-SNAPSHOT</version>
</dependency>
</div>

使用 Gradle

在你的 build.gradle中:

dependencies {
  compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.2.1-SNAPSHOT")
}
</div>

使用

目录结构

--src 
 --main
 --java
  --com.example
  --dao
   --UserDao.java
  --entity
   --User.java
  --DemoApplication.java
  --UserSex.java
 --resources
 --mapper
  --UserMapper.xml
 --application.properties
</div>

基于注解

使用MyBatis-Spring-Boot-Starter will:

将自动检测存在的数据源

将数据源输入然后创建注册一个SqlSessionFactoryBean实例

从SqlSessionFactoryBean中创建注册一个SqlSessionTemplate实例

自动扫描你的 mappers,将它们连接到SqlSessionTemplate然后将它们注册到 Spring 的上下文

我们新建一个实体类User.java,在这里我们使用 Lombok (使用说明见这篇文章)来简化代码

@Data
public class User {
  private Long id;
  private String userName;
  private String password;
  private UserSex userSex;
  private String nickName;
}
</div>

接着我们创建一张叫 user的表

DROP TABLE IF EXISTS user;
CREATE TABLE user(
 id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
 user_name VARCHAR(32) DEFAULT NULL COMMENT '用户名',
 password VARCHAR(32) DEFAULT NULL COMMENT '密码',
 user_sex VARCHAR(32) DEFAULT NULL ,
 nick_name VARCHAR(32) DEFAULT NULL ,
 PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
</div>

然后创建一个 Dao 文件UserDao.java

@Mapper
public interface UserDao {
  @Select("SELECT * FROM user WHERE id = #{id}")
  @Results({
      @Result(property = "userName", column = "user_name"),
      @Result(property = "password", column = "password"),
      @Result(property = "userSex", column = "user_sex", javaType = UserSex.class),
      @Result(property = "nickName",column = "nick_name")
  })
  User findById(@Param("id") Long id);
  @Insert("INSERT INTO user (user_name,password,user_sex ) VALUES (#{userName},#{password},#{userSex})")
  void save(User user);
  @Update("UPDATE user set user_name = #{userName}, nick_name = #{nickName} WHERE id = #{id}")
  void update(User user);
  @Delete("DELETE FROM user where id = #{id}")
  void remove(Long id);
}
</div>

每个方法都对应的对应的 sql 语句,其中@Select注解用于查询,@Result注解将实体类属性跟数据库的字段一一对应,@Insert注解用于插入数据,@Update注解用于修改数据,@Delete注解用于删除

接下来我们简单的测试下

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
  @Autowired
  UserDao userDao;
  @Test
  public void test(){
    User one = new User();
    one.setUserName("张三");
    one.setPassword("123456");
    one.setUserSex(UserSex.MAN);
    userDao.save(one);
    User two = new User();
    two.setUserName("李四");
    two.setPassword("123456");
    two.setUserSex(UserSex. WOMAN);
    userDao.save(two);
  }
}
</div>

结果如下

结果

基于 XML 配置

在application.properties配置文件中新增以下配置

mybatis.type-aliases-package= com.example.entity
mybatis.mapper-locations=classpath:mapper/*.xml
</div>

然后在resources文件夹中创建mapper文件夹,然后新建一个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" >
<mapper namespace="com.example.dao.UserDao">
  <resultMap id="userMap" type="com.example.entity.User">
    <result column="id" property="id"/>
    <result column="user_name" property="userName"/>
    <result column="password" property="password"/>
    <result column="user_sex" property="userSex" javaType="com.example.UserSex"/>
    <result column="nick_name" property="nickName"/>
  </resultMap>
  <insert id="save" parameterType="com.example.entity.User">
    INSERT INTO user (user_name,password,user_sex ) VALUES (#{userName},#{password},#{userSex})
  </insert>
  <delete id="remove" parameterType="java.lang.Long">
    DELETE FROM user where id = #{id}
  </delete>
  <update id="update" parameterType="com.example.entity.User">
    UPDATE user SET user_name = #{userName}, nick_name =#{nickName} WHERE id = #{id}
  </update>
  <select id="findById" parameterType="java.lang.Long" resultMap="userMap">
    SELECT * FROM user WHERE id = #{id}
  </select>
</mapper>
</div>

然后将UserDao.java文件修改如下

public interface UserDao {
  User findById(Long id);
  void save(User user);
  void update(User user);
  void remove(Long id);
}
</div>

最后在SpringBoot的主程序上加上@MapperScan的注解将 dao 文件跟 sql 语句对应起来

@SpringBootApplication
@MapperScan("com.example.dao")
public class DemoApplication {
 public static void main(String[] args) {
 SpringApplication.run(DemoApplication.class, args);
 }
}
</div>

总结

mybatis-spring-boot-starter可以快速的通过注解来开发,十分方便,可以灵活的使用 SQL 和调整 SQL,具体用注解还是基于 XML,我觉得还是看自己的喜好。

下面看下#{}和${}的区别

#{}在底层实现上使用?做占位符来生成PreparedStatement,然后将参数传入,大多数情况都应使用这个,它更快、更安全。

${}将传入的数据直接显示生成在sql中。如:order by ${user_id},如果传入的值是111,那么解析成sql时的值为order by 111, 如果传入的值是id,则解析成的sql为order by id.

以上所述是小编给大家介绍的MyBatis 使用指南,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MyBatis 使用权威指南

相关文章

  • 2017-05-28SpringMVC实现数据绑定及表单标签
  • 2017-05-28RandomAccessFile简介_动力节点Java学院整理
  • 2017-05-28java实现字符串反转
  • 2017-05-28Java微信公众平台开发(14) 微信web开发者工具使用
  • 2017-05-28Java中ArrayList去除重复元素(包括字符串和自定义对象)
  • 2017-05-28Java多线程中的单例模式两种实现方式
  • 2017-05-28微信开发准备第一步 Maven仓库管理新建WEB项目
  • 2017-05-28java高并发写入用户信息到数据库的几种方法
  • 2017-05-28Java 内存分配深入理解
  • 2017-05-28Java Iterator迭代器_动力节点Java学院整理

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Spring Boot Redis 集成配置详解
    • Java interrupt()方法使用注意_动力节点Java学院整理
    • Java 类加载机制详细介绍
    • 30分钟入门Java8之lambda表达式学习
    • java 中如何获取字节码文件的相关内容
    • IntelliJIDEA平台下JNI编程(五)—本地C代码创建Java对象及引用
    • Java 选择排序、插入排序、希尔算法实例详解
    • servlet实现用户登录小程序
    • SSM框架+Plupload实现分块上传大文件示例
    • java中Callback简单使用总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有