文档章节

mybatis学习记录,分析

zysaaa
 zysaaa
发布于 2017/07/22 10:34
字数 647
阅读 3
收藏 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
43
0
浅析Mybatis与Hibernate的区别与用途

有很长一段时间对mybatis是比较陌生的,只知道与Hibernate一样是个orm数据库框架。随着使用熟练度的增加,发现它与Hibernate区别是非常大的,应当结合不同的情况分析选用。结合至今为止的经验...

小欣妹妹
2017/10/26
0
0
Spring和MyBatis环境整合

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

肖歌
2016/03/21
72
0
Spring与Mybatis环境搭建

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

boonya
2015/04/14
0
2
【MyBatis框架】订单商品数据模型-分析思路

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

Mysoft
2015/09/18
179
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

windbg调试C源码级驱动

联机方式不多说了。我博客里有,英文的。 windbg联机文档 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debug-universal-drivers---step-by-step-lab--echo-kernel......

simpower
38分钟前
0
0
redis快照和AOF简介

数据持久化到硬盘:一是快照(snapshotting),二是只追加文件(append-only file AOF) 快照 核心原理:redis某个时间内存内的所有数据写入硬盘 场景:redis快照内存里面的数据 1. 用户发送bgsav...

拐美人
39分钟前
0
0
这个七夕,送你一份程序员教科书级别的告白指南

给广大爱码士们的高能预警: 今天,就是七夕了…… (单身非作战人群请速速退场!) 时常有技术GG向个推君抱怨 经过网民多年的教育 以及技术人持之以恒的自黑 冲锋衣狂热分子·格子衫骨灰级粉...

个推
44分钟前
0
0
python爬虫日志(15)cookie详解

转载:原文地址 早期Web开发面临的最大问题之一是如何管理状态。服务器端没有办法知道两个请求是否来自于同一个浏览器。那时的办法是在请求的页面中插入一个token,并且在下一次请求中将这个...

茫羽行
45分钟前
0
0
qlv视频格式转换器

  腾讯视频中的视频影视资源有很多,小编经常在里面下载视频观看,应该也有很多朋友和小编一样吧,最近热播的电视剧也不少,如《香蜜沉沉烬如霜》、《夜天子》还有已经完结的《扶摇》,这么...

萤火的萤火
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部