文档章节

mybatis学习记录,分析

zysaaa
 zysaaa
发布于 2017/07/22 10:34
字数 647
阅读 2
收藏 0
点赞 0
评论 0

使用maven构建好工程。写好实体类。写好配置文件。创建好数据库表。简单插入两条数据。这里不会介绍mybatis的环境搭建。

先看数据表:

CREATE TABLE `article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `content` text COLLATE utf8_bin,
  `author` int(11) DEFAULT NULL,
  `is_modify` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`id`),
  FOREIGN KEY (author) REFERENCES author (id)
) 

CREATE TABLE `author` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) COLLATE utf8_bin NOT NULL,
  `nickname` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
)

用author这个外键关联,存储了文章对应的authorId。

我们看一下实体类:(目前只有2个,article and author)

@Data
public class Article {
    private int id;
    private String title;
    private String content;
    private Author author;
    private boolean isModify; //对应的数据库类型是tinyint,0代表false,1代表true
}
@Data
public class Author {
    private int id;
    private String username;
    private String nickname;
}

这里提一下我用到了一款插件lombok,具体的请百度。加上@data注解他自动会为你的实体类生成get,set,toString等方法。当然还有很多其他用法。

另外为了方便的测试,写了一个生产sqlsession的工具类:

public class Util {
    private static SqlSession sqlSession = init();
    public static Object getSession(Class clazz)   {
        return sqlSession.getMapper(clazz);
    }
    //读取配置文件
    private static SqlSession init(){
        Reader reader = null;
        try {
            reader = Resources.getResourceAsReader("conf.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        return sessionFactory.openSession(true);
    }
    public static void close() {
        sqlSession.close();
    }
}

这样测试类写起来就可以非常简洁了:

public class MybatisTest {
    public static ArticleMapper articleMapper;
    @Before
    public void before() {
        articleMapper = (ArticleMapper) Util.getSession(ArticleMapper.class);
    }
    @After
    public void after() {
        Util.close();
    }
    @Test
    public void baseTest() {
       articleMapper.{code....}
    }
}

写好对应的ArticleMapper接口类。

好了,进入正题。先看单表查询:

例如:我想查到数据库所有的文章的信息:

@Select(value = "select article.id,article.title,article.author,article.content,article.is_modify as isModify from article")
public List<Article> articles();

这里可以注意到:article.is_modify as isModify,为什么要这样呢?这是为了解决数据库字段名和实体类不一致而采取的措施,不然是不能正确映射的。

当然还有一种解决办法,那就是在配置文件里解决了,利用resultMap的映射。这个后面会提到。

例如:我想查到文章数量:

@Select(value = "select count(1) from article")
public int countOfArticle();

这里这个返回值类型,你换成String,List<String>都行,甚至你换成List<Author>都不会报错,只是count填充不进去,输出为null。

单表查询其实没什么好说的。。。

接下来看联表查询吧,首先我想要记一下:mysql的联表查询,介绍一下我觉得用的最多的2种:inner join,left join。

妈的不想写了,未完待续......

© 著作权归作者所有

共有 人打赏支持
zysaaa
粉丝 0
博文 5
码字总数 6056
作品 0
衢州
早前学习Java记录

Spring 对 iBATIS 的支持】 Spring 通过 DAO 模式,提供了对 iBATIS 的良好支持。 SqlMapClient:是 iBATIS 中的主要接口,通过 xml 配置文件可以让 Spring 容器来管理 SqlMapClient 对象的创...

大风厂蔡成功 ⋅ 2016/07/10 ⋅ 0

Spring与Mybatis环境搭建

SSH框架的结合几乎家喻户晓,但是一般的中小项目,使用Spring和MyBatis就够了,而且MyBatis轻便好使,易上手,值得大家尝试一次。   开篇简介:   Spring: Spring是一个轻量级的控制反转...

boonya ⋅ 2015/04/14 ⋅ 2

Spring和MyBatis环境整合

Spring: Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 两个重要模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。 控制反转模式(也称作依赖性介入)的基本概念...

肖歌 ⋅ 2016/03/21 ⋅ 0

Mysql配置参数innodb_buffer_pool_size的学习与整理

原文地址:Mysql配置参数innodbbufferpoolsize的学习与整理 这半个月来,一直在做一些关于服务器交易端性能的提升工作,主要是分析和讨论交易端性能的瓶颈,找出导致性能减慢的原因,拟定出合...

Realfighter ⋅ 2015/01/15 ⋅ 1

【MyBatis框架】订单商品数据模型-分析思路

我们接下来要对即将用来实验的订单商品数据模型进行分析。 首先在MySql中创建mybatis数据库,在其中创建以下表: CREATE TABLE ( int(11) NOT NULL AUTO_INCREMENT, varchar(32) NOT NULL CO...

Mysoft ⋅ 2015/09/18 ⋅ 0

mybatis学习笔记(9)-订单商品数据模型分析

mybatis学习笔记(9)-订单商品数据模型分析 标签: mybatis [TOC] 本文对接下来几篇博客中用到的数据模型进行分析,并附上建表sql文件和测试数据文件 数据模型分析思路 每张表记录的数据内容 ...

brianway ⋅ 2016/03/01 ⋅ 0

mybatis源码分析之事务管理器

上一篇:mybatis源码分析之Configuration 主要分析了构建SqlSessionFactory的过程中配置文件的读取. 这次重点分析mybatis的事务管理器 仍旧从官网给的例子着手分析,配置文件mybatis-config.xm...

udbwcso ⋅ 2016/04/20 ⋅ 0

springmvc+mybatis学习笔记(汇总)

springmvc+mybatis学习笔记(汇总) 标签 : springmvc mybaits [TOC] 笔记分为两大部分:mybatis和springmvc mybatis springmvc 笔记内容主要是mybatis和springmvc的一些基本概念和使用方法,...

brianway ⋅ 2016/03/30 ⋅ 2

mybatis源码分析缓存

关于mybatis的缓存网上有很多相关的文章,本人首先是看过文章,但是本着学习态度和加深理解,以下是个人跟踪源码的记录。 缓存分三种,1)一级缓2)二级缓存(一般指myatis内置的实现缓存方式)...

xuklc ⋅ 03/05 ⋅ 0

Mybatis一级缓存、二级缓存

以下内容来自美团技术博客:聊聊MyBatis缓存机制 前言 MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足...

为了美好的明天 ⋅ 05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 37分钟前 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 42分钟前 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 昨天 ⋅ 0

Confluence 6 重新获得站点备份文件

Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中。你需要自己访问你安装的 Confluence 服务器,并且从服务器上获得这个文件。 运行从 Confluence...

honeymose ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部