文章目录

  • mybatis下载
  • 业务需求
  • 环境搭建
  • 加入配置文件
  • 创建pojo
  • sql映射文件
  • 加载映射文件
  • 实现根据id查询用户
  • 测试程序:
  • 效果

mybatis下载

mybaits的代码由github.com管理
下载地址:https://github.com/mybatis/mybatis-3/releases
下载的mybatis文件如下:

文件夹解释:
mybatis-3.2.7.jar mybatis的核心包
lib文件夹 mybatis的依赖包所在
mybatis-3.2.7.pdf mybatis使用手册

业务需求

使用MyBatis实现以下功能:
根据用户id查询一个用户
根据用户名称模糊查询用户列表
添加用户
更新用户
删除用户

环境搭建

如下图使用之前创建的mybatis-first工程以及jar包:核心包、依赖包、数据驱动包.

mybatis依赖包:

加载驱动包:

加入配置文件

新建一个Config文件夹用来存储配置文件。
日志打印:mybatis 默认使用log4j作为输出日志信息
log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

SqlMapConfig.xml
SqlMapConfig.xml是mybatis核心配置文件,配置文件内容为数据源、事务管理。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 和spring整合后 environments配置将废除 --><environments default="development"><environment id="development"><!-- 使用jdbc事务管理 --><transactionManager type="JDBC" /><!-- 数据库连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments>
</configuration>

创建pojo

pojo类作为mybatis进行sql映射使用,po类通常与数据库表对应,

数据库user表如下图:

User.java如下

package com.itheima.mybatis.pojo;import java.io.Serializable;
import java.util.Date;public class User implements Serializable {/*** */private static final long serialVersionUID = 1L;private Integer id;private String username;// 用户姓名private String sex;// 性别private Date birthday;// 生日private String address;// 地址public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User [id=" + id + ", username=" + username + ", sex=" + sex+ ", birthday=" + birthday + ", address=" + address + "]";}}

sql映射文件

在config下的sqlmap目录下创建sql映射文件User.xml:

<?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">
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="test">
</mapper>

加载映射文件

mybatis框架需要加载Mapper.xml映射文件
将users.xml添加在SqlMapConfig.xml,如下:

<mapper resource="sqlmap/User.xml"/>

实现根据id查询用户

使用的sql:

SELECT * FROM `user` WHERE id = 1

. 映射文件:
在user.xml中添加select标签,编写sql:

<?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">
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="test"><!-- id:statement的id 或者叫做sql的id--><!-- parameterType:声明输入参数的类型 --><!-- resultType:声明输出结果的类型,应该填写pojo的全路径 --><!-- #{}:输入参数的占位符,相当于jdbc的? --><select id="queryUserById" parameterType="int"resultType="cn.itcast.mybatis.pojo.User">SELECT * FROM `user` WHERE id  = #{id}</select></mapper>

测试程序:

测试程序步骤:

  1. 创建SqlSessionFactoryBuilder对象
  2. 加载SqlMapConfig.xml配置文件
  3. 创建SqlSessionFactory对象
  4. 创建SqlSession对象
  5. 执行SqlSession对象执行查询,获取结果User
  6. 打印结果
  7. 释放资源
    MybatisTest编写测试程序如下:
public class MybatisTest {private SqlSessionFactory sqlSessionFactory = null;@Beforepublic void init() throws Exception {// 1. 创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();// 2. 加载SqlMapConfig.xml配置文件InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");// 3. 创建SqlSessionFactory对象this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);}@Testpublic void testQueryUserById() throws Exception {// 4. 创建SqlSession对象SqlSession sqlSession = sqlSessionFactory.openSession();// 5. 执行SqlSession对象执行查询,获取结果User// 第一个参数是User.xml的statement的id,第二个参数是执行sql需要的参数;Object user = sqlSession.selectOne("test.queryUserById", 1);// 6. 打印结果System.out.println(user);// 7. 释放资源sqlSession.close();}
}

效果

利用Mybatis写第一个数据库操作的程序相关推荐

  1. spring boot 入门_SpringBoot入门建站全系列(三十)Mybatis多数据源进行数据库操作

    SpringBoot入门建站全系列(三十)Mybatis多数据源进行数据库操作 一.概述 多数据源,就是有多个数据库的配置. 多数据源配置并不麻烦,使用起来和单数据源基本相同,但是,重要的是事务的控制 ...

  2. MyBatis执行一次数据库操作的原理以及顺序

    1.初始化SqlSessionFactory,默认实现是DefultSqlSessionFactory,这个一般是一个应用一个实例就够了,例如单例模式: 2.通过SqlSessionFactory获得 ...

  3. mysql数据库在哪里写语句_Mysql数据库操作语句

    零.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...

  4. 直角三角形面积Java_利用Eclipse编写第一个简单的Java程序,实现如下功能。 键盘输入:直角三角形两直角边a, b,根据勾股定理计算斜边的平方值。并输出。 例如:运行效果如下...

    kruskal算法对稠密图较为适合 朗读下列城市名字,并与其特色连接起来. C3和C4植物在叶片的解剖构造上由明显的区别,C4植物的维管束鞘有 ,形成 . 感应式电能表的起动电流小于电子式电能表. 美 ...

  5. SpringCloud或SpringBoot+Mybatis-Plus利用mybatis插件实现数据操作记录及更新对比

    引文 本文主要介绍如何使用mybatis插件实现拦截数据库操作并根据不同需求进行数据对比分析,主要适用于系统中需要对数据操作进行记录.在更新数据时准确记录更新字段 核心:mybatis插件(拦截器). ...

  6. Mybatis新发现—在idea中数据库操作出现了异常,最好的查错助手居然是这个!

    Mybatis新发现--如果一个数据库操作出现了异常,最好的助手居然是这样! 1. 日志工厂 如果一个数据库操作出现了异常,我们需要排错.日志就是最好的助手. 曾经:sout,debug 现在:日志工 ...

  7. MyBatis 源码阅读 -- 核心操作篇

    核心操作包是 MyBatis 进行数据库查询和对象关系映射等工作的包.该包中的类能完成参数解析.数据库查询.结果映射等主要功能.在主要功能的执行过程中还会涉及缓存.懒加载.鉴别器处理.主键自增.插件支 ...

  8. 艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写

    本系列文章导航 基于.NET平台的Windows编程实战(一)--前言 基于.NET平台的Windows编程实战(二)-- 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)-- 数 ...

  9. 【Python】pymysql基础:数据库操作

    ####数据库操作 小程序之调用写好的sql模块 这里简单介绍python3对于数据库的操作步骤 重点介绍如何在项目实战中巧妙的调用自己写好的SQL模块,以达到函数式编程尽可能复用代码节省时间的目的. ...

最新文章

  1. Java library util_sdejavautil.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  2. 实现一个vue的图片预览插件
  3. 只能计算机论文,谈计算机及人工智能技术发展-人工智能论文-计算机论文.docx...
  4. 不安装oracle 连接数据库,不安装oracle 连接服务器oracle数据库方法
  5. Kerberos认证过程学习理解
  6. linux 关闭防火墙 centos7,centos7关闭防火墙和selinux
  7. Php.ini文件位置在哪里 Php.ini文件找不到
  8. 编程之美第一篇 01分数规划
  9. 类Shiro权限校验框架的设计和实现(2)--对复杂权限表达式的支持
  10. python语法学习第一天--变量、运算符、数据类型
  11. IIS6上Ssl开发环境的搭建
  12. 5万字、97 张图总结操作系统核心知识点
  13. GB35114---聊聊SM2签名格式
  14. python计算复合年化增长率、年化波动率与夏普比率
  15. C++——以任意数为底的对数
  16. 手机图形计算器matlab,Mathlab图形计算器
  17. java应用程序 从 mian函数进入子程序*
  18. 关于 WARN conf.Configuration: bad conf file: element not property
  19. 使用LR和XGBoost跑通criteo点击率预测数据集
  20. python之数据库-表操作

热门文章

  1. python中textinput_python – 在Kivy应用程序中获取textinput值
  2. python做一个窗口样式_python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法...
  3. docker 部署_Nginx K8s + Docker 部署 ,虚拟机部署教程。
  4. 多屏互动协议 linux,【Linux系统多屏互动电视】Linux系统多屏互动电视报价及图片大全-列表版-ZOL中关村在线...
  5. 两个苹果手机如何同步数据_同步苹果手机和Windows的提醒事项
  6. php数组转ini文件,php – 将数组转换为.ini文件
  7. 棒棒糖球球机器人_球球大作战刷棒棒糖_球球大作战刷龙蛋攻略
  8. wind 下装mysql,windows 下安装MySQL
  9. 长春分享网站服务器迁移,网站迁移公告
  10. python while true_Python天坑系列(一):while 1比while True更快?