Mybatis入门Demo(单表的增删改查)
1.Mybatis
- 什么是Mybatis:
- mybatis是一个持久层框架,用java编写的
- 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动、创建连接等繁杂过程
- 它使用了ORM思想实现了结果集的封装
2. 入门Demo(假设对users表进行操作)
Mybatis的环境搭建
第一步:创建Java工程并导入mybatis-3.2.2.jar和mysql-connector-java-5.1.47.jar两个jar包到本工程下的lib包中,然后buli path
第二步:创建实体类和dao的接口(本工程下的src文件夹下的com.alibaba.wlq.bean包下以及com.alibaba.wlq.dao包下)
注意1:在创建实体类的时候如果重写了构造方法那么一定要加上无参的构造方法,否则会出错
注意2:在创建实体类的时候属性名要和表中的字段名相匹配
注意3:要生成set、get方法,也可以重写tostring方法,方便输出
package com.alibaba.wlq.bean;
public class Users {
private int id;
private String name;
private int age;
private String sex;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Users(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public Users() {
super();
}
@Override
public String toString() {
return "Users [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
public Users(int id, String name, int age, String sex) {
super();
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
}
package com.alibaba.wlq.dao; import java.util.List; import com.alibaba.wlq.bean.Users;
//是个接口相当于之前jdbc时的实现类,里面写方法的
public interface UsersMapper {
//查询users表中所有的记录
List<Users> selectAll();
/**
* 增加用户
*/
void addUser(Users user);
/**
* 根据id删除记录
* @param id
*/
void deleteById(int id);
/**
* 根据id修改用户信息
* @param user
*/
void updateById(Users user);
}
第三步:创建Mybatis的主配置文件(本工程下的resources文件夹下)
SqlMapConfig.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>
<!-- 配置环境-->
<environments default="development">
<!-- 配置mysql的环境 -->
<environment id="development">
<!-- 配置事务的类型 -->
<transactionManager type="JDBC" />
<!-- 配置数据源连接池 -->
<dataSource type="POOLED">
<!-- 配置连接数据库的四个基本信息 -->
<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="123456" />
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件是指每个dao独立的配置文件 -->
<mappers>
<mapper resource="com/alibaba/wlq/mapper/UsersMapper.xml" />
</mappers>
</configuration>
第四步:创建映射配置文件(本工程下的resources文件夹下的com.alibaba.wlq.mapper包下)
- UserMapper.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.alibaba.wlq.dao.UsersMapper">
<!-- 这是查询users表中所有记录的sql语句,resultType属性是返回值类型,因为我们查询所有的方法肯定不止
一条数据,每一条数据就是一个对象,所以返回值类型是实体类,然后mybatis会帮我们封装进list集合中 -->
<select id="selectAll" resultType="com.alibaba.wlq.bean.Users">
select * from users
</select>
<insert id="addUser" parameterType="com.alibaba.wlq.bean.Users">
insert into users(name,age,sex) values(#{name},#{age},#{sex})
</insert>
<delete id="deleteById" parameterType="int">
delete from users where id = #{id}
</delete>
<update id="updateById" parameterType="com.alibaba.wlq.bean.Users">
update users set name = #{name},age = #{age},sex = #{sex} where id = #{id}
</update>
</mapper>
测试
import static org.junit.jupiter.api.Assertions.*; import java.io.Reader;
import java.util.List; 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 org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import com.alibaba.wlq.bean.Users;
import com.alibaba.wlq.dao.UsersMapper; class test {
static SqlSession session = null;
static UsersMapper usersmapper;
@BeforeAll
static void setUpBeforeClass() throws Exception {
//读取配置文件
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
//创建SqlSessionFactory工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
//使用工厂生产SqlSession对象
session = factory.openSession();
//使用SqlSession创建Dao接口的代理对象
usersmapper = session.getMapper(UsersMapper.class);
} @AfterAll
static void tearDownAfterClass() throws Exception {
//向数据库提交
session.commit();
} @Test
void test1() {
//使用代理对象执行方法
//查询所有记录并输出
List<Users> list = usersmapper.selectAll();
System.out.println(list);
}
@Test
void test2() {
//使用代理对象执行方法
//增加用户
usersmapper.addUser(new Users("xxx",18,"男"));
}
@Test
void test3() {
/**
* 删除id为10的用户
*/
usersmapper.deleteById(10);
}
@Test
void test4() {
/**
* 根据用户id修改用户信息
*/
usersmapper.updateById(new Users(5,"杨幂",18,"女"));
}
}
Mybatis入门Demo(单表的增删改查)的更多相关文章
- python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)
day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...
- hibernate对单表的增删改查
ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 实现对单表的增删改查 向区域表中增加数据: 第一步: 新建一个Da ...
- Django学习笔记(10)——Book单表的增删改查页面
一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...
- django模型层 关于单表的增删改查
关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...
- Mybatis(一)实现单表的增删改查
1.1 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...
- 1.SSM整合_单表的增删改查
目标:增删改查 环境:Maven+Eclipse+Tomcat7+JDK7 思维导图: 表结构 目录结构 依赖 <dependencies> <dependency> < ...
- Django学习笔记--数据库中的单表操作----增删改查
1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...
- django 利用ORM对单表进行增删改查
牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...
- Django中对单表的增删改查
之前的简单预习,重点在后面 方式一: # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象 book_obj=Book.objects.creat ...
随机推荐
- C#数据结构-赫夫曼树
什么是赫夫曼树? 赫夫曼树(Huffman Tree)是指给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小.哈夫曼树(也称为最优二叉树)是带权路径长度最短的树,权值较大的结点 ...
- Tomcat文件包含漏洞的搭建与复现:CVE-2020-1938
Tomcat文件包含漏洞的搭建与复现:CVE-2020-1938 漏洞描述 2020年2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020- ...
- Maven史上最全的pom.xml详解
下面主要是借鉴 官网的资料 收集而来 主要是为了讲解,用到的很少,但是还是需要了解 ,重点是方便查验资料 <project xmlns="http://maven.apache.org ...
- 卷积涨点论文 | Asymmetric Convolution ACNet | ICCV | 2019
文章原创来自作者的微信公众号:[机器学习炼丹术].交流群氛围超好,我希望可以建议一个:当一个人遇到问题的时候,有这样一个平台可以快速讨论并解答,目前已经1群已经满员啦,2群欢迎你的到来哦.加入群唯一的 ...
- pycharm的快捷键的使用
作为未来的程序猿,快捷键对我们来说很重要,因为它方便且快捷,今天就给大家介绍pycharm中常用的快捷键 1.编辑: Ctrl + Space------------------基本的代码完成(类.方 ...
- 1.自定义view入门
1.继承自view 系统提供的view 如 TextView .ImageView 都是继承自view的: 2.自定义一个TextView 通过自定义一个TextView 来熟悉继承自view 的自定 ...
- java.io.IOException: Target host must not be null, or set in parameters. scheme=null, host=null, path=/
使用的 xutils 出现标题中的错误 原因:没有添加 Cookie 1 params.addHeader("Cookie", CurrentUserSettings.getCoo ...
- U8CO使用C#版(一)
1.懒加载: object obj = null; System.Type oType = System.Type.GetTypeFromProgID("U8Login.clsLogin&q ...
- svn忽略idea生成的本地配置文件
为根目录添加svn属性svn:global-ignores 值为 *.iml .idea 多个值之间用换行分隔
- java中自定义一个异常类 在某些情况抛出自定的异常 ----------阻断程序
//=============定义异常类 package org.springblade.flow.engine.errorException; /** * 自定义异常处理写入sap失败 */ pub ...