下面我们搭建一下MyBaits的开发环境,也就是一个用MyBaits框架访问数据库的例子。

1、项目结构如下

这里搭建的是一个maven项目。

2、引入依赖pom.xml

4.0.0com.suibibk  mybatis-test01  0.0.1-SNAPSHOTorg.mybatis          mybatis          3.4.6mysql          mysql-connector-java          5.1.45log4j          log4j          1.2.12junit          junit          4.7

这里重点是如下两个依赖

      org.mybatis          mybatis          3.4.6mysql          mysql-connector-java          5.1.45

3、编写实体类:User

public class User{    private Long id;//自增的ID    private String username;//用户名    private String userId;//这个用来存放用户的userId,不要用自增键太不安全    private String password;//用户密码    private String nickname;//昵称    private String imgUrl;//用户头像    private String sex;//用户性别0女,1是男    private String age;//用户年龄    private String create_datetime;//用户创建时间    private String update_datetime;//用户修改时间    private String type;//用户类别0是管理员,1是已登录用户,2是游客    private String remark;//用户备注    private String visible;//用户是否有效    private String value;//预留字段    public Long getId() {        return id;    }    public void setId(Long id) {        this.id = id;    }    public String getUserId() {        return userId;    }    public void setUserId(String userId) {        this.userId = userId;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getNickname() {        return nickname;    }    public void setNickname(String nickname) {        this.nickname = nickname;    }    public String getImgUrl() {        return imgUrl;    }    public void setImgUrl(String imgUrl) {        this.imgUrl = imgUrl;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }    public String getCreate_datetime() {        return create_datetime;    }    public void setCreate_datetime(String createDatetime) {        create_datetime = createDatetime;    }    public String getUpdate_datetime() {        return update_datetime;    }    public void setUpdate_datetime(String updateDatetime) {        update_datetime = updateDatetime;    }    public String getType() {        return type;    }    public void setType(String type) {        this.type = type;    }    public String getRemark() {        return remark;    }    public void setRemark(String remark) {        this.remark = remark;    }    public String getValue() {        return value;    }    public void setValue(String value) {        this.value = value;    }    public String getVisible() {        return visible;    }    public void setVisible(String visible) {        this.visible = visible;    }    @Override    public String toString() {        return "User [id=" + id + ", username=" + username + ", userId="                + userId + ", password=" + password + ", nickname=" + nickname                + ", imgUrl=" + imgUrl + ", sex=" + sex + ", age=" + age                + ", create_datetime=" + create_datetime + ", update_datetime="                + update_datetime + ", type=" + type + ", remark=" + remark                + ", visible=" + visible + ", value=" + value + "]";    }}

这里字段需要跟数据库的字段一模一样,否则需要在配置文件或者加上注解一一对应,这个后续再说,这里先用最简单的方式:一模一样。

4、编写持久层接口:UserMapper

public interface UserMapper {    public List findAllUser();}

这里习惯性后缀用Mapper,也习惯性在mapper包下面

5、编写持久层接口映射文件:UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>        select * from user    

select标签上的id对应的是接口中的方法,返回类型对应的就是接口中返回的类型(不用到List,指定domain即可),然后标签内容就是要执行的语句。mapper标签中的namespace对应的就是接口类。这里不需要强制要求UserMapper.java和UserMapper.xml的路径和命名一样

6、编写SqlMapConfig.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>

这个是MyBatis的配置文件,主要是配置了环境和mappers,环境上就是指定事务类型,数据库连接信息,当然上面的default可以定义为别的名字。不过环境那里的id要和defalut相同。mapper中的现在我们的例子是配置版,也就是指定配置文件的路径即可。其实到这里我们就应该猜到流程了。程序启动的时候肯定先加载SqlMapConfig.xml配置文件,然后创建数据库连接池。接下来根据mapper标签找到UserMapper.xml配置文件,然后解析UserMapper.xml配置文件可以找到要执行的语句以及对应的接口和返回类型,这样子就全部都起啦。

7、测试类Test

public class Test {    @org.junit.Test    public void test1() throws Exception {        //1、读取配置文件        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");        //2、创建SqlSessionFactory工厂        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();        SqlSessionFactory factory =  builder.build(in);        //3、使用工厂生产SqlSession对象        SqlSession sqlSession = factory.openSession();        //4、使用SqlSession创建Dao接口的代理对象        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);        //5、使用代理对象执行方法        List user = userMapper.findAllUser();        System.out.println("user:"+user.toString());        //6、释放资源        sqlSession.close();        in.close();    }}

上面步骤应该很清晰啦,执行后输出如下结果

哈图片有点小,因为我的服务器带宽太小了,反正也不是很重要的结果。

8、使用注解版

其实使用注解版就更简单啦,但是我觉得没有配置版灵活,注解版也就是没有UserMapper.xml文件,但是要在UserMapper.java的方法加上注解,如下:

public interface UserMapper {    @Select("select * from user")    public List findAllUser();}

然后修改下MyBatis的配置文件SqlMapConfig.xml中的mapper指向,现在没有接口映射配置文件了就直接指向接口

然后运行程序结果一模一样,至此环境搭建成功。

总结

通过上面快速搭建MyBatis开发环境的例子我们知道,相对于原始的jdbc操作,便利了许多,我们想要操作一个表只需要编写对应的实体类和Mapper接口以及Mapper映射配置文件就可以啦。当我们使用了注解的方式后就更加简单,只需要简单的加一个Mapper接口即可。如果我们不需要实体类,那么直接返回Map也是可以的。但是呢,我们这个标签的目的并不是单单的学会MyBatis的使用,毕竟任何框架的使用其实都是很简单的,只需要看下官网例子或者百度一下即可,我们应该要研究MyBatis的实现原理,学会它的设计方法。从中提升我们的软件架构以及设计模式。

mybatis注解开发_快速搭建MyBatis开发环境(配置版+注解版)相关推荐

  1. java云开发_快速入门云开发

    什么是云开发 这里引用官方的一段描述: 云开发(Tencent CloudBase,TCB)是云端一体化的后端云服务 ,采用 serverless 架构,免去了移动应用构建中繁琐的服务器搭建和运维.同 ...

  2. 【java开发】快速搭建java开发环境(离线开发、在线开发)

    文章目录 1.简介 2.下载和安装jdk 2.2 下载jdk 2.2 配置环境变量 2.3 常见命令 3.jdk开发 3.1 测试代码(hello world) 3.2 测试代码(animal, do ...

  3. android找不到符号_快速搭建Android开发环境——Android Studio(附ADB找不到设备)...

    由于毕设大概率最终要使用Android来实现,所以现在要开始学习一些Android开发基础了. 学习一门技术,最先要解决的问题就是开发环境的问题. 就如同两年前学java那样,在windows下配置环 ...

  4. SpringMVC学习(二)——快速搭建SpringMVC开发环境(注解方式)

    文章目录 说明 1.工程搭建 2.注解配置 2.1.context:annotation-config说明 2.2.context:component-scan配置说明 2.3.mvc:annotat ...

  5. JEECG整合finereport快速搭建与开发

    JEECG整合finereport快速搭建与开发 FineReport介绍          FineReport报表软件具有完备的报表填报功能,支持多级汇总填报.利用这一报表工具,用户即可把企业的业 ...

  6. 修正《用Docker快速搭建Go开发环境》文章中的一处错误

    上周写的文章<五分钟用Docker快速搭建Go开发环境>,文章发出去后有不少阅读量,而且从后台看的数据 60%的人都读完了.今天我自己用下面命令往 容器里的 Go 项目里下载包时发现了一处 ...

  7. EclipseLink+H2 快速搭建JPA开发环境

    JPA是Java Persistence API, 是Java提供的持久层开发的统一API.但是JPA只是定义的规范接口,并没有提供具体实现, JPA的具体实现有Hibernate .EclipseL ...

  8. linux开发 stc_在Linux上快速搭建8051开发环境

    在Linux上快速搭建8051开发环境(2018-7-2) 0. 写在开始之前 实验操作系统环境: Ubuntu 16.04 编译器: sdcc SDCC - Small Device C Compi ...

  9. php开发架构设计,基于php的快速搭建SPA开发架构的框架设计与开发

    程序 员之 家 基于 P h p 的快速搭建 S PA 开发架构的框架设计与 开发 ?叶松鑫 马 灏辉 何子 安 彭吉琪 黄钰冰 (佛 山科学技 术学 院 电子 信息工程 学 院 广东 佛 山 528 ...

最新文章

  1. 怎么用python画简单的图-python中简单易学的绘图:用turtle画太极图
  2. 【Bootstrap-插件使用】Jcrop+fileinput组合实现头像上传功能
  3. C# 程序运行耗时测试类
  4. 使用vert.x 2.0,RxJava和mongoDB创建simpe RESTful服务
  5. vue 导出_Vue核心知识:8.3 vuex在vue-cli中的应用,文件之间的导出与引入
  6. Python3 Tcp未发送/接收完数据即被RST处理办法
  7. python 发送邮件附件很慢_Python SMTP 发送带附件电子邮件
  8. 解决方案 -SQL脚本建表产生ORA-00942错误
  9. 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
  10. springboot 定时器_springBoot的定时器应该这样写
  11. java jax ws_Java 7是否包含JAX-WS实现或API?
  12. windows转换U盘格式
  13. .net core 集成skywalking
  14. 往服务器复制文件提示拒绝访问,Win10系统复制文件提示目标文件夹被拒绝访问的解决方法...
  15. 史上最狠的十二星座分析
  16. Linux基础(2)---系统基础
  17. mysql更新加锁_一条简单的更新语句,MySQL是如何加锁的?
  18. 记录几个免费质量高的图库视频库
  19. GICv3-4宏观视图
  20. 去掉txt文件内的换行符

热门文章

  1. WPF TextBox只能输入数字
  2. 公共语言运行库中的程序集-04强命名的程序集
  3. Spring - Bean注解配置光速入门
  4. Primefaces,Hibernate和SpringRoo集成
  5. Spring AMQP ActiveMQ教程
  6. 数据库面试 - 如何设计才可以让系统从未分库分表动态切换到分库分表上?
  7. (草稿)如何判断一名UiPath开发人员是否合格?
  8. 正则规则大全 JAVA
  9. sql中聚合函数和分组函数_SQL选择计数聚合函数-语法示例解释
  10. 如何在Telegram机器人中设置推送通知