MyBatis的Mapper 代理的增删改查操作(三)上

简介: MyBatis的Mapper 代理的增删改查操作(三)

一. Mapper 形式的 开发


前一章讲了 命名空间形式的CRUD 操作,会发现里面有一个不太友好的问题。 普通的一个单表 User ,需要写UserDao,UserDaoImpl, 与User.xml 三个文件,并且这三个文件之间并没有很明显的关联关系, 比较麻烦,所以MyBatis 推荐使用Mapper 的形式进行开发, 只需要创建 XxxMapper.java 接口和XxxMapper.xml 配置文件即可。 下面,讲解一下Mapper 形式的开发。 过程与前面的基本都是一样的。


二. Mapper 形式的开发过程


二.一 导入jar包


20190617220909457.png


二.二 User 实体类


package com.yjl.pojo;
/**
 @author:yuejl
 @date: 2019年6月15日 上午11:11:02
 @Description Mybatis 使用的基本类 User
*/
public class User {
  /**
   * @param id id编号,自增
   * @param name 姓名
   * @param age 年龄
   * @param sex 性别
   * @param description 描述
   */
  private Integer id;
  private String name;
  private Integer age;
  private String sex;
  private String description;
  public Integer getId() {
    return id;
  }
  public void setId(Integer id) {
    this.id = id;
  }
  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 String getSex() {
    return sex;
  }
  public void setSex(String sex) {
    this.sex = sex;
  }
  public String getDescription() {
    return description;
  }
  public void setDescription(String description) {
    this.description = description;
  }
  @Override
  public String toString() {
    return "User [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", description=" + description
        + "]";
  }
}


二.三 创建包 mapper


20190618192749265.png


二.四 在mapper 包下创建UserMapper.java 接口


package com.yjl.mapper;
import java.util.List;
import com.yjl.pojo.User;
/**
@atuhor:两个蝴蝶飞
@Description: User实体类所对应的接口
*/
public interface UserMapper {
  public User getById(int id);
  public List<User> findAll();
}


二.五 在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.yjl.mapper.UserMapper">
  <select id="getById"  parameterType="int" resultType="user">
    select * from user where id=#{id}
  </select>
  <select id="findAll" resultType="user">
    select * from user 
  </select>
</mapper>


20190618193005814.png


二.六 SqlSessionFactoryUtils 工具类,创建SqlSession


package com.yjl.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 @author:两个蝴蝶飞
 @date: 2019年6月15日 上午11:13:26
 @Description 类的相关描述
*/
public class SqlSessionFactoryUtils {
  /*创建SqlSession的工厂 SqlSessionFactory对象*/
  private static SqlSessionFactory sqlSessionFactory=null;
  private SqlSessionFactoryUtils(){
  }
  /**
   * 单例模式 获取实例
   * @author 两个蝴蝶飞
   * @return
   */
  public static SqlSessionFactory getInstance(){
    synchronized(SqlSessionFactoryUtils.class){
      if(sqlSessionFactory==null){
        InputStream input=null;
        // Mybatis 核心配置文件名
        String resource_name="SqlMapConfig.xml";
        try {
          input=Resources.getResourceAsStream(resource_name);
          sqlSessionFactory=new SqlSessionFactoryBuilder().build(input);
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
    return sqlSessionFactory;
  }
  /**
   * 
   * @author 两个蝴蝶飞
   * @return 获取当前的Session
   */
  public static SqlSession getSession(){
    if(sqlSessionFactory==null){
      getInstance();
    }
    return sqlSessionFactory.openSession();
  }
}


二.七 mybatis 配置文件 SqlMapConfig.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>
  <!-- 配置别名 ,在UserMapper.xml 下的parameterType 和resultType 就可以用别名来替换了。-->
  <typeAliases>
    <typeAlias type="com.yjl.pojo.User" alias="user"/>
  </typeAliases>
  <!-- 开发环境  development -->
  <environments default="development">
    <environment id="development">
      <!-- 事务管理 -->
      <transactionManager type="JDBC"></transactionManager>
      <!-- 数据源 ,为pooled 连接池 -->
      <dataSource type="pooled">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value="abc123"/>
      </dataSource> 
    </environment>
  </environments>
  <mappers>
    <!-- 引入文件资源 -->
    <mapper resource="com/yjl/mapper/UserMapper.xml"/>
  </mappers>
</configuration>


二.八 总的目录结构 如下


20190618193238325.png


在UserTest 类下创建测试的方法。

相关文章
|
30天前
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
30 10
|
2月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
3月前
|
SQL Java 数据库连接
Mybatis系列之 Error parsing SQL Mapper Configuration. Could not find resource com/zyz/mybatis/mapper/
文章讲述了在使用Mybatis时遇到的资源文件找不到的问题,并提供了通过修改Maven配置来解决资源文件编译到target目录下的方法。
Mybatis系列之 Error parsing SQL Mapper Configuration. Could not find resource com/zyz/mybatis/mapper/
|
2月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
44 1
|
3月前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
315 0
|
3月前
|
XML Java 数据库连接
Mybatis 模块拆份带来的 Mapper 扫描问题
Mybatis 模块拆份带来的 Mapper 扫描问题
43 0
|
30天前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
91 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
30天前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
52 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
267 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
30天前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
15 0
mybatis使用二:springboot 整合 mybatis,创建开发环境