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 类下创建测试的方法。

相关文章
|
5天前
|
XML Java 数据库连接
【MyBatis】MyBatis操作数据库(一)
【MyBatis】MyBatis操作数据库(一)
13 1
|
6天前
|
SQL 存储 Java
基于MyBatis的增删改查操作
基于MyBatis的增删改查操作
12 1
|
7天前
|
XML Java 数据库连接
如何使用 MyBatis 来进行增、删、改、查操作
如何使用 MyBatis 来进行增、删、改、查操作
16 2
|
6天前
|
SQL 存储 Java
基于MyBatis的增删改查的基础操作
基于MyBatis的增删改查的基础操作
11 0
|
2天前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
13 2
|
21天前
|
Java 数据库连接 数据库
Spring日志完结篇,MyBatis操作数据库(入门)
Spring日志完结篇,MyBatis操作数据库(入门)
|
1天前
|
XML 关系型数据库 数据库
使用mybatis-generator插件生成postgresql数据库model、mapper、xml
使用mybatis-generator插件生成postgresql数据库model、mapper、xml
14 0
|
2天前
|
SQL Java 数据库连接
Mybatis中一对多mapper配置
Mybatis中一对多mapper配置
8 0
|
5天前
|
SQL Java 数据库连接
【MyBatis】深入解析MyBatis:高效操作数据库技术详解
【MyBatis】深入解析MyBatis:高效操作数据库技术详解
19 0
|
5天前
|
SQL Java 数据库连接
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
12 0