开发者社区> 两个蝴蝶飞> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MyBatis 使用 SQL 语句构建器
MyBatis 使用 SQL 语句构建器
72 0
MyBatis超详细介绍——SQL语句构建器类
MyBatis超详细介绍——SQL语句构建器类 (本文作为学习笔记,了解更多请参考:MyBatis参考文档) MyBatis3提供了SQL类帮助构造SQL语句: private String selectPersonSql() { return new SQL() {{ SELECT("P.
2486 0
mybatis源码解读(五)——sql语句的执行流程
  还是以第一篇博客中给出的例子,根据代码实例来入手分析。 1 static { 2 InputStream inputStream = MybatisTest.class.
1022 0
MyBatis学习 之 二、SQL语句映射文件(1)resultMap
SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如:   Xml代码                                         当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。
791 0
MyBatis学习 之 三、SQL语句映射文件(2)增删改查、参数、缓存
2.2 select 一个select 元素非常简单。例如: Xml代码             SELECT ST.STUDENT_ID,                  ST.
757 0
MyBatis学习 之 四、动态SQL语句
有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。使用Oracle的序列、mysql的函数生成Id。
846 0
MyBatis 实践 -动态SQL/关联查询
MyBatis 实践 标签: Java与存储 动态SQL 动态SQL提供了对SQL语句的灵活操作,通过表达式进行判断,对SQL进行拼接/组装.
805 0
mybatis简单sql使用java注解而不是xml配置
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/50067251 一直没有系统的接触mybat...
705 0
记录mybatis的sql语句应用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
536 0
+关注
两个蝴蝶飞
两个蝴蝶飞
449
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载