MyBatis 入门Demo
新建数据库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 +
- '}';
- }
- }
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的更多相关文章
- Mybatis入门Demo(单表的增删改查)
1.Mybatis 什么是Mybatis: mybatis是一个持久层框架,用java编写的 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动.创建连接等繁杂过程 ...
- Mybatis入门DEMO
下面将通过以下步骤说明如何使用MyBatis开发一个简单的DEMO: 步骤一:新建表STUDENTS 字段有: Stu_Id.Stu_Name.Stu_Age.Stu_Birthday CREATE ...
- 最基础的mybatis入门demo
demo结构 数据库情况 (不会转sql语句 骚瑞) 数据库连接信息 jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:m ...
- Mybatis入门和简单Demo
一.Mybatis的诞生 回顾下传统的数据库开发,JDBC和Hibernate是使用最普遍的技术,但这两种ORM框架都存在一定的局限性: JDBC:最原生的技术,简单易学,执行速度快,效率高,适合大数 ...
- 【SSH系列】初识spring+入门demo
学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍 ...
- netty入门demo(一)
目录 前言 正文 代码部分 服务端 客服端 测试结果一: 解决粘包,拆包的问题 总结 前言 最近做一个项目: 大概需求: 多个温度传感器不断向java服务发送温度数据,该传感器采用socket发送数据 ...
- SpringBoot 入门 Demo
SpringBoot 入门 Demo Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从 ...
- 写给新手看的 MyBatis 入门
目录 MyBatis 使用前的准备 什么是 MyBatis 使用Maven 进行 MyBatis 开发环境搭建 MyBatis 入门 项目整体结构一览 MyBatis 的简单生命周期 1.获取 Sql ...
- springboot + mybatisPlus 入门实例 入门demo
springboot + mybatisPlus 入门实例 入门demo 使用mybatisPlus的优势 集成mybatisplus后,简单的CRUD就不用写了,如果没有特别的sql,就可以不用ma ...
随机推荐
- 抽象类和final修饰符
抽象类和抽象方法的特点: 1.都通过abstract关键字来修饰. 2.抽象类不能实例化. 3.抽象类中可以有 0~多个抽象方法.(可以没有抽象方法) 4.抽象方法只有方法声明,没有方法实现.(没有方 ...
- DVWA全级别之Brute Force(暴力破解)
Brute Force Brute Force,即暴力(破解),是指黑客利用密码字典,使用穷举法猜解出用户口令. 首先我们登录DVWA(admin,password),之后我们看网络是否为无代理,: ...
- 吴裕雄 python 机器学习——支持向量机SVM非线性分类SVC模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm fr ...
- java 实体类 时间格式字段注解
@DatetimeFormat是将String转换成Date,一般前台给后台传值时用 @JsonFormat(pattern="yyyy-MM-dd") 将Date转换成Strin ...
- 多种语言输出helloworld
- 流式计算(三)-Flink Stream 篇一
原创文章,谢绝任何形式转载,否则追究法律责任! 流的世界,有点乱,群雄逐鹿,流实在太多,看完这个马上又冒出一个,也不知哪个才是真正的牛,据说Flink是位重量级选手,能流计算,还能批处理, 和其他伙 ...
- 安装和配置Linux系统虚拟机
1.打开虚拟机软件 2.点击创建新的虚拟机,选择典型(推荐)类型的配置. 3.点击稍后安装操作系统. 4.客户机操作系统选择Linux,版本选择CentOS 7 64位. 5.虚拟机名称可自行更改,位 ...
- celery参考
1,https://www.wandouip.com/t5i377365/ 2,https://www.cnblogs.com/zhangmingcheng/p/6050270.html (syste ...
- jmeter beanshell 使用参数引用
1.直接使用beanshell 写代码引用: 2. beanshell 引用.java 文件 3.beanshell 引用jar 包
- 2.1.FastDFS-单机拆分版-调度器安装配置
Centos610系列配置 我们在Centos610FastDFS单机模式-FastDFS安装 中已经完成了FastDFS的安装,接下来我们进行FastDFS调度器的安装. 1.找到FastDFS配置 ...