1、准备工作

jar包:

  mybatis-3.4.4.jar,下载地址:https://github.com/mybatis/ignite-cache/releases

  mysql-connector-java-5.1.40-bin.jar,下载地址:https://dev.mysql.com/downloads/connector/j/

项目目录结构:

数据库建标语句

  1. /*如果已经存在此数据库,先删除*/
  2. drop database if exists sqltest ;
  3. /*创建并设置编码为UTF-8*/
  4. create database sqltest default character set utf8 ;
  5. /*选择数据库*/
  6. use sqltest ;
  7.  
  8. /*删除已有的学生表*/
  9. drop table if exists tb_student ;
  10.  
  11. /*创建学生表*/
  12. CREATE TABLE `tb_student` (
  13. `id` int(11) NOT NULL AUTO_INCREMENT,
  14. `stuId` varchar(45) DEFAULT NULL,
  15. `name` varchar(45) DEFAULT NULL,
  16. `clsId` varchar(45) DEFAULT NULL,
  17. PRIMARY KEY (`id`)
  18. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  19.  
  20. /*插入学生的数据*/
  21. insert into tb_student (stuId,name,clsId) value ('','张三','') ;
  22. insert into tb_student (stuId,name,clsId) value ('','李四','') ;
  23. insert into tb_student (stuId,name,clsId) value ('','王五','') ;
  24. insert into tb_student (stuId,name,clsId) value ('','赵六','') ;
  25. insert into tb_student (stuId,name,clsId) value ('','巩发财','') ;
  26. insert into tb_student (stuId,name,clsId) value ('','柏拉图','') ;
  27. insert into tb_student (stuId,name,clsId) value ('','钱老虎','') ;
  28. insert into tb_student (stuId,name,clsId) value ('','杨伟','') ;
  29. insert into tb_student (stuId,name,clsId) value ('','陈海','') ;

二、代码编写

实体类Student:

  1. package org.yoki.edu.main.vo;
  2.  
  3. public class Student {
  4.  
  5. private Integer id;
  6. private String stuId;
  7. private String name;
  8. private String clsId;
  9.  
  10. /*省略setter、getter方法*/
  11.  
  12. }

MyBatis的配置文件:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6.  
  7. <!-- typeAliases必须写在environments和mappers前面,不然报错,这是dtd格式限制的 -->
  8. <typeAliases>
  9. <!-- 用于在实体类的映射文件进行使用student,而不用每次使用类的全名 -->
  10. <typeAlias type="org.yoki.edu.main.vo.Student" alias="student" />
  11. </typeAliases>
  12.  
  13. <environments default="development">
  14. <environment id="development">
  15. <transactionManager type="JDBC" />
  16. <!-- 数据库链接信息,注:分号改为&amp;转义符,防止报错 -->
  17. <dataSource type="POOLED">
  18. <property name="driver" value="com.mysql.jdbc.Driver" />
  19. <property name="url" value="jdbc:mysql://localhost:3306/sqltest?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false" />
  20. <property name="username" value="root" />
  21. <property name="password" value="root" />
  22. </dataSource>
  23. </environment>
  24. </environments>
  25.  
  26. <mappers>
  27. <!-- 实体类的映射文件 -->
  28. <mapper resource="org/yoki/edu/main/vo/StudentMapper.xml" />
  29. </mappers>
  30.  
  31. </configuration>

实体类Student配置文件:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <!-- namespace随意内容 -->
  6. <mapper namespace="this.is.student.mapper.namespace">
  7.  
  8. <!-- 方法一 -->
  9. <!-- type属性对应与在MyBatis配置文件中typeAliases标签下定义的引用 -->
  10. <resultMap id="studentMapper" type="student">
  11. <!-- 属性名称<>列名 -->
  12. <id property="id" column="id" />
  13. <result property="stuId" column="stuId" />
  14. <result property="name" column="name" />
  15. <result property="clsId" column="clsId" />
  16. </resultMap>
  17.  
  18. <!-- resultMap属性值对应 -->
  19. <select id="selectById" resultMap="studentMapper">
  20. select * from tb_student where id = #{id}
  21. </select>
  22.  
  23. <!-- 方法二 -->
  24. <!-- resultType可以使用类的全名,也可以使用MyBatis配置文件中typeAliases标签下定义的引用 -->
  25. <!-- <select id="selectById" resultType="org.yoki.edu.main.vo.Student"> -->
  26. <!-- select * from tb_student where id = #{id} -->
  27. <!-- </select> -->
  28.  
  29. </mapper>
  1. SessionUtils(用于初始化SqlSessionFactory和提供获取SqlSession的接口):
  1. package org.yoki.edu.utils;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5.  
  6. import org.apache.ibatis.io.Resources;
  7. import org.apache.ibatis.session.SqlSession;
  8. import org.apache.ibatis.session.SqlSessionFactory;
  9. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  10.  
  11. public class SessionUtils {
  12.  
  13. private static SqlSessionFactory fa = null ;
  14.  
  15. static{
  16. /*静态代码块,在类加载后执行*/
  17. String resource = "org/yoki/edu/utils/mybatis-config.xml" ;
  18. InputStream input;
  19. try {
  20. /*获取配置文件的输入流*/
  21. input = Resources.getResourceAsStream(resource);
  22. /*根据输入流生成SqlSessionFactory*/
  23. fa = new SqlSessionFactoryBuilder().build(input) ;
  24. int j = 0 ;
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29.  
  30. public SqlSession getSqlSession(){
  31. if(null == fa)
  32. return null;
  33. SqlSession session = fa.openSession() ;
  34. return session ;
  35. }
  36.  
  37. }

StudentDao(这里偷懒没有使用接口):

  1. package org.yoki.edu.main.dao;
  2.  
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.yoki.edu.main.vo.Student;
  5. import org.yoki.edu.utils.SessionUtils;
  6.  
  7. public class StudentDao {
  8.  
  9. private SessionUtils utils = new SessionUtils() ;
  10.  
  11. public Student getById(Integer id){
  12. SqlSession session = utils.getSqlSession() ;
  13. /*selectOne的第一个参数对应映射文件的namespace + '.' + (select、update、insert、delete)id*/
  14. Student st = session.selectOne("this.is.student.mapper.namespace" + ".selectById", id) ;
  15. return st ;
  16. }
  17.  
  18. }

测试类:

  1. package org.yoki.edu.main;
  2.  
  3. import org.yoki.edu.main.dao.StudentDao;
  4. import org.yoki.edu.main.vo.Student;
  5.  
  6. public class MainRun {
  7.  
  8. public static void main(String[] args) {
  9. StudentDao dao = new StudentDao() ;
  10. Student st = dao.getById(2) ;
  11. System.out.println(st);
  12. }
  13.  
  14. }

结果:

MyBatis学习(一):简单的运行的更多相关文章

  1. MyBatis学习之简单增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多

    一.用到的实体类如下: Student.java package com.company.entity; import java.io.Serializable; import java.util.D ...

  2. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...

  3. MyBatis学习总结(一)简单入门案例

    MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...

  4. MyBatis学习笔记一:MyBatis最简单的环境搭建

    MyBatis的最简单环境的搭建,使用xml配置,用来理解后面的复杂配置做基础 1.环境目录树(导入mybatis-3.4.1.jar包即可,这里是为后面的环境最准备使用了web项目,如果只是做 my ...

  5. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...

  6. 【Todo】Mybatis学习-偏理论

    之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html  <SSM(SpringMVC+Spring+Myba ...

  7. MyBatis学习 之 四、MyBatis配置文件

    目录(?)[-] 四MyBatis主配置文件 properties属性 settings设置 typeAliases类型别名 typeHandlers类型句柄 ObjectFactory对象工厂 pl ...

  8. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  9. mybatis学习(一)一个在idea下的实例

    今天总结的是mybatis,首先说mybatis是什么? MyBatis 是一个简化和实现了 Java 数据持久化层(persistence layer)的开源框架,它抽象了大量的 JDBC 冗余代 ...

  10. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

随机推荐

  1. LaTeX:毕设模版设计问题1 各级标题编号设为黑体

    我用'titlesec'宏包设计各级标题格式指定字体为黑体,结果标题编号仍为Times New Roman .

  2. BZOJ3991 [SDOI2015]寻宝游戏 【dfs序 + lca + STL】

    题目 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择一个村庄,瞬间转移到这个村庄,然后可以任意在地图的道路 ...

  3. BZOJ1195 [HNOI2006]最短母串 【状压dp】

    题目 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,Sn)都是T的子串. 输入格式 第一行是一个正整数n(n<=12),表示给定的字符串的 ...

  4. 关于postman使用上发现的一点问题

    之前后台用的java,一直用的postman测试接口数据,之前不管是get.post.delete.put请求都是在param传递的数据,java下面是没问题可以测试的.但是今天自己写Node发现po ...

  5. Linux内核解析之标准I/O库

    当Linux创建一个进程时,会自动创建3个文件描述符0,1,2,分别对应标准输入,标准输出,错误输出.C库中与文件描述符对应的是文件指针.查看C库头文件stdio.h中的源码 typedef stru ...

  6. rp6818 和rp4418 重点修改的kernel几个问题!

    kernel\arch\arm\plat-s5p6818\drone\include文件下#define PAD_GPIOD1     (PAD_MODE_ALT | PAD_FUNC_ALT1 | ...

  7. java中过滤查询文件

    需求,过滤出C盘demo目录下 所有以.java的文件不区分大小写 通过实现FileFilter接口 定义过滤规则,然后将这个实现类对象传给ListFiles方法作为参数即可. 使用递归方法实现 pa ...

  8. Drupal 有用的模块

    投票模块drigg https://www.drupal.org/project/drigg

  9. 中国正式发放5G牌照 详细对比中美两国5G实力

    今天,中国5G商用走进新里程:工信部向中国电信.中国移动.中国联通.中国广电发放5G商用牌照,中国也成为继韩国.美国.瑞士.英国后,第五个正式商用5G的国家. 按照之前的规划,中国原定于2020年开启 ...

  10. Codeforces Gym 100733I The Cool Monkeys 拆点+最大流

    原题链接:http://codeforces.com/gym/100733/problem/I 题意 有两颗树(只是树,不是数据结构),每棵树上有不同高度的树枝,然后有m只猴子在某棵树的前m高的树枝上 ...