小白学习MyBatis的第一天,学习资料包括MyBatis3的官方文档,以及孤傲苍狼大佬的博客。这里先致敬大佬。

· 首先,什么是MyBatis?

  引用官网的一段话,“MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。”

  MyBatis的一个强大之处在于,“避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集”。举个栗子,传统的JDBC在拼接SQL语句的过程中,经常会出现少加空格、多个逗号、多个AND/OR之类的错误,不胜其烦;MyBatis的动态SQL中的<if>,<choose>,<where>等语法很好的解决了这一问题。这段在后面动态SQL部分细说。

  好了,闲话少说,进入正题。

· 建立Java项目,导入Jar包

  首先展示一下工程目录。在classpath目录下,建立一个lib文件夹,导入以下三个jar包

  

  mybatis-3.4.6.jar即是MyBatis的jar包,要使用MyBatis, 只需将mybatis-x.x.x.jar文件置于 classpath 中即可;

  mysql-connector-java即数据库驱动;

  log4j用于显示日志,可以在调试过程中打印出SQL语句,便于学习。

  【挖个坑:log4j的jar包和log4j.properties共同用于输出日志,至于原理……我也没搞懂】

——————————————————————————————————————————————————————————

  数据库方面,建立一张user表,插入张三和李四两个用户。

  

· 先实现一个最简单的查询

  先看一眼工程目录,建立如下的文件:

  

  目前src下需要bean,dao,config和util四个包,分别存放JavaBean,配置文件,客户端代码(使用MyBatis执行各种操作),以及工具类(封装了获取SqlSession的方法)。

  首先在src下的config文件下,写一个总的配置文件MyBatisConfiguration.xml。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="UNPOOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><property name="username" value="root"/><property name="password" value="Danny2036"/></dataSource></environment></environments></configuration>

  这里先只需要环境配置,即environments中的driver,url,username和password四项。

  driver为驱动,在mysql-connector-java 5中,值为"com.mysql.jdbc.Driver"; mysql-connector-java 6中,值为"com.mysql.cj.jdbc.Driver"。其他项包括url,username,password,根据自己的数据库进行配置。

  在bean目录下建立JavaBean。(这里先不要管那个UID)

package com.alleymeowy.bean;import java.io.Serializable;public class User implements Serializable {private static final long serialVersionUID = 3305858088000394142L;private Integer id;private String name;private Integer age;// 快速生成构造函数 toString方法 以及get&set方法的快捷键  alt+insertpublic User() {}public User(String name, Integer age) {this.name = name;this.age = age;}public User(Integer id, String name, Integer age) {this.id = id;this.name = name;this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", age='" + age + '\'' +'}';}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;}
}

  在util包里添加一个获取SqlSession的方法。

package com.alleymeowy.util;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.Reader;public class DBUtil {public static SqlSession getSqlSession() throws IOException {// 1.readerReader reader = Resources.getResourceAsReader("com/alleymeowy/config/MyBatisConfiguration.xml");// 2.SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);// 3.SqlSessionreturn sqlSessionFactory.openSession();}
}

  在config包下建一个sql包,添加Users.xml文件,实现selectOne和selectAll方法。

<?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.alleymeowy.config.sql.Users"><select id="selectOne" parameterType="int" resultType="com.alleymeowy.bean.User">select id, name, age from user where id = #{id}</select><select id="selectAll" resultType="com.alleymeowy.bean.User">select id, name, age from user</select></mapper>

  【注意:这里需要在总配置文件里加上mappers的声明,放在<environments>标签之后。总配置文件的标签需要按顺序摆放,详见官方文档。】

 <mappers><mapper resource="com/alleymeowy/config/sql/Users.xml"/><!--<mapper class="com.alleymeowy.annotation.UserMapper"/>--><!--<mapper class="com.alleymeowy.mapper.BlogMapper"/>--></mappers>

  在dao包里写一个实现类。先实现一个最简单的selectOne和selectAll方法。

package com.alleymeowy.dao;import com.alleymeowy.bean.User;
import com.alleymeowy.util.DBUtil;
import org.apache.ibatis.session.SqlSession;import java.io.IOException;
import java.util.List;public class UserDAO {/*** 根据id查询一条记录* @param id* @throws IOException*/public static User selectOne(int id) throws IOException {SqlSession sqlSession = null;User user;try {sqlSession = DBUtil.getSqlSession();user = sqlSession.selectOne("com.alleymeowy.config.sql.Users.selectOne", id);} finally {sqlSession.close();}return user;}/*** 查询多条记录* @throws IOException*/public static List<User> selectAll() throws IOException {SqlSession sqlSession = null;List<User> users;try {sqlSession = DBUtil.getSqlSession();users = sqlSession.selectList("com.alleymeowy.config.sql.Users.selectAll");} finally {sqlSession.close();}return users;}public static void main(String[] args) throws IOException {System.out.println(selectOne(1));System.out.println("************");System.out.println(selectAll());}
}

  最后给出查询结果(只给出查询结果,不显示日志等)

User{id=1, name='Zhang3', age='10'}
************[User{id=1, name='Zhang3', age='10'}, User{id=2, name='Li4', age='20'}, User{id=3, name='erha', age='10'}, User{id=4, name='NotUser', age='21'}, User{id=5, name='NotUser2', age='22'}]Process finished with exit code 0

  完毕。

  

  

  

  

  

转载于:https://www.cnblogs.com/AlleyMeowy/p/10165759.html

MyBatis笔记(一) 最简单的select相关推荐

  1. 【狂神JAVA】MyBatis笔记

    简介 自学的[狂神JAVA]MyBatis 分享自写源码和笔记,希望对大家有帮助 本人配置 jdk13.0.2 (jdk1.7以上均可) Maven 3.6.3 MySQL 5.7.23 (mysql ...

  2. 【MyBatis笔记】07-MyBatis 核心配置文件

    MyBatis 核心配置文件 properties 定义属性及读取属性文件 settings 设置运行时行为 typeAliases 类型别名 定义单个别名 批量定义别名 typeHandlers 类 ...

  3. MyBatis笔记二:配置

    MyBatis笔记二:配置 1.全局配置 1.properites 这个配置主要是引入我们的 properites 配置文件的: <properties resource="db.pr ...

  4. Unity3D笔记——MySQL数据库 简单使用

    ** Unity3D笔记--MySQL数据库 简单使用 前言:Unity3D笔记是我平时做一些好玩的测试和研究,记录的笔记.会比较详细也可能随口一提就过了. 所以大家见谅了,内容一般都会是原创的(非原 ...

  5. Mybatis笔记整理2(各种关联查询)

    POJO类,均省略setget与tostring方法 User类 public class User implements Serializable {private static final lon ...

  6. 【学习笔记】超简单的快速傅里叶变换(FFT)(含全套证明)

    整理的算法模板合集: ACM模板 目录 一.概念概述 二.前置知识 1. 多项式 2. 复数 4. 欧拉公式证明 3. 复数的单位根 / 单位向量 三.FFT 算法概述 四.离散傅里叶变换(DFT) ...

  7. 【学习笔记】求解简单递归式的一般方法

    [学习笔记]求解简单递归式的一般方法 手动博客搬家: 本文发表于20180618 15:53:06, 原地址https://blog.csdn.net/suncongbo/article/detail ...

  8. mybatis笔记之一次插入多条数据sql语句写法

    mybatis笔记之一次插入多条数据sql语句写法

  9. PHP学习笔记03:简单网上调查站点

    PHP学习笔记03:简单网上调查站点 网上调查站点由两个页面构成.第一个页面(vote.html文件)是一份问卷,问卷上只有一个问题"开发MySQL应用程序你最喜欢哪种编程语言?" ...

  10. 【狂神MyBatis笔记】map作为参数传递类型进行增删改查模糊查询

    接口中的参数传入map: 实现类的传入参数为map的键的名称,这个键可以自定义名称: 例:根据ID获取用户 接口: //根据ID获取用户User getUserById2(Map<String, ...

最新文章

  1. lib目录和maven dependency目录的jar包冲突
  2. 项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦)...
  3. Linux服务器集群系统(一)—— LVS(Linux Virtual Server)简介
  4. ASP.NET学习笔记
  5. hashcode java_java 的Object类的hashcode()方法具体是怎么实现的?
  6. ExtJS和AngularJS比较
  7. HDOJ-2036 求多边形面积
  8. __gnu_cxx::hash_map使用中的一些问题
  9. WebStorm学习笔记002---grunt-watch插件的使用-修改html,css,js文件实现自动编译更新
  10. css中的伪类 之 first-child
  11. 抽奖h5小游戏还能这么玩?h5抽奖游戏种类详解
  12. python3 面向对象_傻瓜式学Python3——面向对象
  13. 数据库分片以及schema概念
  14. 【Seen看世界】:像高智商人群看齐
  15. java卡夫卡_卡夫卡(kafka)
  16. Zxing生成自定义二维码样式
  17. phantompdf 下载_英雄联盟手游详细下载方法,附中文翻译!
  18. oracle spool设置字符集,spool出来的文件格式一个是UTF8一个是ASCII ??
  19. 每周一磁 · 矫顽力Hcb和内禀矫顽力Hcj
  20. R可视化 | 三维散点图

热门文章

  1. 拓端tecdat|R语言自定义两种统计量度:平均值和中位数,何时去使用?
  2. 拓端tecdat|R语言stan泊松回归Poisson regression
  3. 拓端tecdat|R语言分层线性模型案例
  4. 键盘输入字符串统计_C语言 | 统计选票结果的程序
  5. 试分析家用变频空调的计算机控制原理,习 题 五
  6. mysql 分表 存储过程,通用分表存储过程
  7. MATLAB 距离函数及用法
  8. Python借助smote实现不均衡样本数据的上采样和下采样,并可视化展示样本分布
  9. 中文分词的python实现----HMM、FMM
  10. 用access建立一个试题库_我想建立一个试题库,用Access可吗?还 – 手机爱问