新建数据库my_db,新建表student_tb

id为主键,不自动递增。

不必插入数据。


下载MyBatis

https://github.com/mybatis/mybatis-3/releases

解压。


新建Java项目,什么都不用勾选(如果要在IDEA中操作数据库,可勾选SQL Support)。

勾选后,IDEA右侧会有一个Database的工具,可在IDEA中直接操作数据库。


导入mybatis所有的jar包、数据库驱动

mybatis.jar是必需的。

lib是mybatis依赖的第三方jar包,根据需要选择,嫌麻烦或者小白,可全部导入lib中的jar。

pdf是mybatis的文档。


设置MyBatis的日志

在src下新建文件 log4j.properties ,内容如下:

# Global logging configuration
log4j.rootLogger=DEBUG, stdout,D # MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE # Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# log4j.appender.stdout.Threshold = ERROR
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n # File output...
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D:/log.txt
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
log4j.appender.D.encoding=UTF-8

可到 mybatis.pdf   8.1.1.2小节复制来修改。

这个配置会在控制台输出DEBUG级的日志,我们可以看到程序的执行过程,如果觉得打印的东西太多看着烦,可以把红色部分的#去掉,这样只打印错误信息。

log4j的配置可参考:

https://www.cnblogs.com/chy18883701161/p/12117192.html


src下新建包com.chy.pojo,包下新建POJO类Student:

package com.chy.pojo;

public class Student {
private Integer id;
private String name;
private Integer age;
private Integer score; 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;
} public Integer getScore() {
return score;
} public void setScore(Integer score) {
this.score = score;
} @Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
 
POJO(Plain Ordinary Java Object)简单的Java对象,属性及其getter、setter方法,开发时t可以加oString()便于调试。
PO,Persistent Object,持久层对象,对应数据表,即数据表的映射,po也算是pojo。
pojo、po的包名也常使用model、domain。
 
VO ,value object,值对象,一般是在po、pojo的基础上进行扩展,封装数据进行传输或者接受前台传递的数据
DTO(Data Transform Object)  数据传输对象,可以把po、pojo、vo作为dto。
 
pojo类的基本类型的成员变量,尽量使用包装类型。

src下新建包com.chy.mapper,mapper下创建实体-数据表的映射文件  StudentMapper.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"> <mapper namespace="com.chy.mapper.StudentMapper">
<insert id="insertStudent" parameterType="com.chy.pojo.Student">
INSERT INTO student_tb(id,name,age,score)VALUES (#{id},#{name},#{age},#{score})
</insert> <select id="queryById" parameterType="Integer" resultType="com.chy.pojo.Student">
SELECT * FROM student_tb WHERE id=#{id}
</select> <update id="updateStudent" parameterType="com.chy.pojo.Student">
UPDATE student_tb SET name=#{name},age=#{age},score=#{score} WHERE id=#{id}
</update> <delete id="deleteStudent" parameterType="Integer">
DELETE FROM student_tb WHERE id=#{id}
</delete>
</mapper>

可以到mybatis.pdf  2.1.5小节复制来修改。

我们把映射文件都放在mapper包下,映射文件常以 实体类名+Mapper 命名。

<mapper>的namespace常设置为  包名.映射文件名。

通过namepace和id调用相应的sql语句,这两者组合起来要唯一。

parameterType指定参数类型,resultType指定要把查询结果映射到哪种数据类型。如果数据类型是pojo类,尽量写全限定类名,这样Ctrl+B可以转到定义处。

映射文件的写法可参考:

https://www.cnblogs.com/chy18883701161/p/12122079.html


src下新建数据库配置文件mysql.properties:

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT
username=chy
password=abcd

对应信息要换为自己的。

src下新建mybatis的核心(全局)配置文件mybatis-config.xml:

<?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>
<!--指定数据库配置文件的位置-->
<properties resource="mysql.properties"></properties> <!--指定日志实现使用的是log4j-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings> <!--指定实体类-->
<typeAliases>
<typeAlias type="com.chy.pojo.Student" alias="Student"/>
</typeAliases> <!--指定数据库配置文件中的变量名-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments> <!--指定映射文件的位置-->
<mappers>
<mapper resource="com/chy/mapper/StudentMapper.xml"/>
</mappers>
<!-- Continue going here --> </configuration>

可到mybatis.pdf  2.1.2小节复制来改。

<configuration>的子元素是有一定顺序的,顺序不对会报红。

mybatis全局配置文件的写法可参考:

https://www.cnblogs.com/chy18883701161/p/12120023.html


src下新建包com.chy.test,包下新建测试类Test:

package com.chy.test;

import com.chy.pojo.Student;
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 Test {
public static void main(String[] args) throws IOException {
//加载mybatis的全局配置文件
String resources="mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resources); //根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//通过SqlSessionFactory创建SqlSession
SqlSession sqlSession=sqlSessionFactory.openSession(); //增
Student student = new Student();
student.setId(1);
student.setName("chy");
//第一个参数对应映射文件中的namespace+id,通过namespace+id调用相应的sql语句,第二个参数是传给sql语句的参数
sqlSession.insert("com.chy.mapper.StudentMapper.insertStudent", student); //修改数据库(增、删、改)后,需要commit()提交给数据库,才会同步本次会话做的修改。只有查询的,可以不commit()。
sqlSession.commit();
//关闭会话
sqlSession.close();
}
}
     //改
Student student = new Student();
student.setId(1);
student.setName("chenghongyong");
sqlSession.update("updateStudent", student);
        //查
Student student=sqlSession.selectOne("queryById", 1);
System.out.println(student);

如果本次session期间,只有查询,可以不用commit()。

        //删
sqlSession.delete("deleteStudent", 1);

可参考:https://www.cnblogs.com/chy18883701161/p/12150758.html


说明

(1)版本声明部分,最好不要复制其他人的,如果你和ta用的mybatis库版本不同,会出错。最好到mybatis.pdf中去复制。

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

(2)配置文件的文件名问题

log4j.properties这个文件名是约定的,不能自己取。

映射文件、数据库配置文件需要在mybatis全局配置文件中指定,它们的文件名可以自己取。

mybatis全局配置文件要在程序中指定,文件名可以自己取。

(3)配置文件的位置问题

配置文件必须放在资源根目录下。常见的做法有2种:

  • 在项目的根目录下新建文件夹resource,右键标识为资源根目录

注意是Resource Root,不是Source Root。

在里面放配置文件:

  • 也可以像demo中一样放置在src下,因为src就是默认的资源根目录。

mapper中的映射文件放哪儿都行,只要路径配置对得上就ok。

log4j.properties必须直接放在资源根目录下(不能放在子文件夹里)。

MyBatis 入门Demo的更多相关文章

  1. Mybatis入门Demo(单表的增删改查)

    1.Mybatis 什么是Mybatis: mybatis是一个持久层框架,用java编写的 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动.创建连接等繁杂过程 ...

  2. Mybatis入门DEMO

    下面将通过以下步骤说明如何使用MyBatis开发一个简单的DEMO: 步骤一:新建表STUDENTS 字段有: Stu_Id.Stu_Name.Stu_Age.Stu_Birthday CREATE ...

  3. 最基础的mybatis入门demo

    demo结构 数据库情况 (不会转sql语句 骚瑞) 数据库连接信息 jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:m ...

  4. Mybatis入门和简单Demo

    一.Mybatis的诞生 回顾下传统的数据库开发,JDBC和Hibernate是使用最普遍的技术,但这两种ORM框架都存在一定的局限性: JDBC:最原生的技术,简单易学,执行速度快,效率高,适合大数 ...

  5. 【SSH系列】初识spring+入门demo

    学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍 ...

  6. netty入门demo(一)

    目录 前言 正文 代码部分 服务端 客服端 测试结果一: 解决粘包,拆包的问题 总结 前言 最近做一个项目: 大概需求: 多个温度传感器不断向java服务发送温度数据,该传感器采用socket发送数据 ...

  7. SpringBoot 入门 Demo

    SpringBoot   入门 Demo Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从 ...

  8. 写给新手看的 MyBatis 入门

    目录 MyBatis 使用前的准备 什么是 MyBatis 使用Maven 进行 MyBatis 开发环境搭建 MyBatis 入门 项目整体结构一览 MyBatis 的简单生命周期 1.获取 Sql ...

  9. springboot + mybatisPlus 入门实例 入门demo

    springboot + mybatisPlus 入门实例 入门demo 使用mybatisPlus的优势 集成mybatisplus后,简单的CRUD就不用写了,如果没有特别的sql,就可以不用ma ...

随机推荐

  1. shell批量创建数据表的一个方法

    #!/bin/bash #批量新建数据表 #删除`符号,具体原因我也没搞懂 for i in {1..30};do mysql 地址 -u账号 -p密码 -e "use 库名;CREATE ...

  2. kafka集群搭建记录

    本文记录搭建kafka搭建过程. 一.硬件机器介绍 192.168.183.195 master-node 192.168.183.194 data-node1 192.168.183.196 dat ...

  3. centos7下Maven Java selenium3环境搭建

    centos7下Maven Java selenium3环境搭建 一.Jdk安装 我这里用的是open-jdk. [adawang@localhost src]$ sudo yum search op ...

  4. 萌新深度学习与Pytorch入门记录(一):Win10下环境安装

    深度学习从入门到入土,安装软件及配置环境踩了不少坑,过程中参考了多处博主给的解决方法,遂整合一下自己的采坑记录. (若遇到不一样的错误,请参考其他博主答案解决) 笔者电脑系统为win10系统,在此环境 ...

  5. opencv:自定义滤波

    卷积核的定义 均值卷积核 // 自定义滤波 - 均值卷积 int k = 15; Mat mkernel = Mat::ones(k, k, CV_32F) / (float)(k * k); Mat ...

  6. 7、源与值(Source/Values)

    学习目录:树莓派学习之路-GPIO Zero 官网地址:https://gpiozero.readthedocs.io/en/stable/source_values.html 环境:UbuntuMe ...

  7. 激活4500-X RTU license

    1.查看设备license Switch#sho version Cisco IOS Software, IOS-XE Software, Catalyst 4500 L3 Switch Softwa ...

  8. Kettle-User Defined Java Class使用-大写转换

    一.大写转换 (1)步骤(表输入-Java脚本-表输出) (2)配置 1)表输入 2)java脚本 public boolean processRow(StepMetaInterface smi, S ...

  9. 实现一个简易的Unity网络同步引擎——netgo

    实现一个简易的Unity网络同步引擎Netgo 目前GOLANG有大行其道的趋势,尤其是在网络编程方面.因为和c/c++比较起来,虽然GC占用了一部分机器性能,但是出错概率小了,开发效率大大提升,而且 ...

  10. 「题解」「POJ1322」Chocolate

    目录 题目 原题目 简易题意 思路分析 代码 练习题 题目 原题目 点这里 简易题意 包裹里有无限个分布均匀且刚好 \(c\) 种颜色的巧克力,现在要依次拿 \(n\) 个出来放到桌子上.每次如果桌子 ...