【MyBatis】-----初识【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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 引用映射文件 -->
<mappers >
<mapper resource="com/myBatis/mapper/userMapper.xml"/>
</mappers>
</configuration>
SqlMapConfig.xml
二、实体类
package com.myBatis.entity;
public class EUser {
private Integer id;
private String name;
private Integer age;
public int getId() {
return 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 void setId(Integer id) {
this.id = id;
}
@Override
public String toString() {
return "EUser [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
EUser.java
三、实体类的映射文件
<?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
-->
<mapper namespace="com.myBatis.mapper.userMapper.xml"> <!-- 根据id查询得到一个user对象 -->
<select id="getUser" parameterType="int" resultType="com.myBatis.entity.EUser">
select * from users where id=#{id}
</select>
<!-- 根据id查询删除一个user对象 -->
<delete id="deleteUser" parameterType="com.myBatis.entity.EUser">
delete from users where id=#{id}
</delete>
<!-- 创建用户(Create) -->
<insert id="addUser" parameterType="com.myBatis.entity.EUser">
insert into users values(null,#{name},#{age})
</insert>
<!-- 修改用户(Update) -->
<update id="updateUser" parameterType="com.myBatis.entity.EUser">
update users set name=#{name},age=#{age} where id=#{id}
</update> </mapper>
userMapper.xml
四、测试方法
package myBatisTest; import java.io.IOException;
import java.io.Reader; 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.Test; import com.myBatis.entity.EUser; public class TestUser { //修改
@Test
public void testUpdateUser() {
try {
Reader reader= Resources.getResourceAsReader("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession= sqlSessionFactory.openSession(true);
//先查找
String select = "com.myBatis.mapper.userMapper.xml.getUser";
EUser user = sqlSession.selectOne(select, 5);
System.out.println(user);
//再修改
user.setName("改啦2122");
user.setAge(50);
String update = "com.myBatis.mapper.userMapper.xml.updateUser";
int i = sqlSession.update(update, user);
System.out.println(i);
EUser user1= sqlSession.selectOne(select, 5);
System.out.println(user1);
} catch (IOException e) {
e.printStackTrace();
}
} //添加
@Test
public void testAddUser() {
try {
Reader reader= Resources.getResourceAsReader("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession= sqlSessionFactory.openSession(true);
String add = "com.myBatis.mapper.userMapper.xml.addUser";
EUser user = new EUser();
user.setName("用户孤傲苍狼");
user.setAge(20);
int i = sqlSession.insert(add, user);
System.out.println(i);
} catch (IOException e) {
e.printStackTrace();
}
} //删除
@Test
public void testDeleteUser() {
try {
Reader reader= Resources.getResourceAsReader("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
/**
* openSession(true) 手动提交
* 数据库中的autocommit针对的是数据库自己以及命令窗口,必须在程序手动提交
*/
SqlSession sqlSession= sqlSessionFactory.openSession(true);
String delete = "com.myBatis.mapper.userMapper.xml.deleteUser";
int i= sqlSession.delete(delete, 4);
System.out.println(i);
} catch (IOException e) {
e.printStackTrace();
}
} //查询
@Test
public void testGetUser() { try {
Reader reader= Resources.getResourceAsReader("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession= sqlSessionFactory.openSession(true);
String select = "com.myBatis.mapper.userMapper.xml.getUser";
EUser user = sqlSession.selectOne(select, 1);
System.out.println(user);
} catch (IOException e) {
e.printStackTrace();
}
}
}
TestUser.java
注:
类的映射文件中的<mapper namespace="com.myBatis.mapper.userMapper.xml"> 映射文件后缀名可不写
测试类中的 String select = "com.myBatis.mapper.userMapper.xml.getUser"; 映射文件后缀名可不写
参考:MyBatis学习总结(一)——MyBatis快速入门
【MyBatis】-----初识【MyBatis】的更多相关文章
- 初识mybatis(二)
上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置my ...
- mybatis入门--初识mybatis
初识mybatis 今天,一起来说说mybits这个框架吧.这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. ...
- MyBatis For .NET学习- 初识MyBatis
MyBatis的框架. Introduction MyBatis本是apache的一个开源项目iBatis,2010年这个项目由 apache software foundation迁移到了googl ...
- 初识Mybatis之工程搭建
简介:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...
- MyBatis学习01(初识MyBatis和CRUD操作实现)
1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...
- 初识MyBatis
ORM:对象关系映射,它只是一种规则. 像MyBatis,Hibernate对jdbc进行了封装. 第一章 回顾JDBC开发 1.优点:简单易学,上手快,非常灵活构建SQL(自己写的),效率高.2.缺 ...
- Mybatis之旅第一篇-初识Mybatis
一.JDBC的问题 为什么我们要使用Mybatis,是因为JDBC存在以下问题 1. 数据库连接创建.释放频繁造成系统资源浪费,从而影响系统性能.如果使用数据库连接池可解决此问题. 2. Sql语句在 ...
- Day1 Mybatis初识(一)
框架 将重复的,繁琐的代码实现封装,让程序员将更多的精力放在业务的理解和分析上. 框架的作用 提高开发效率 隐藏细节 三大框架SSH --> SSM 1) 表述层: 用户 ...
- 初识Mybatis和一些配置和练习
什么是Mybatis: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBat ...
- Hello Mybatis 02 mybatis generator
接着上一篇文章通过Mybatis完成了一个User的CRUD的功能之后,这篇开始还需要建立一个Blog类,这样就可以模拟一个简单的微博平台的数据库了. 数据库准备 首先我们,还是需要在数据库中新建一个 ...
随机推荐
- Vue Cli 移动端开发
一.
- cacti监控
cacti监控 cacti简介 Cacti是一套基于php,mysql,snmp及rrdtool开发的网络流量监测图形分析工具.它通过snmpget获取数据,使用rrdtool绘画图形 Cacti轮询 ...
- RBAC | YAML |
YAML配置文件: 1.凡是可以在application.properties配置的文件,都可以在application.yaml文件中配置 2.properties的优先级大于yaml的优先级 后端 ...
- List&LinQ
DataTable会将整个数据表接收过来,可真正使用的数据未必是整个数据表所有的数据. 使用List可以接收需要使用的数据 public class Data_Model { public strin ...
- Luogu P2619 [国家集训队2]Tree I 凸优化,wqs二分
新学的科技.设\(f(x)\)为选\(x\)条白色边的时候的最小生成树权值和,那么可以猜到它应该是一个下凸函数的形式. 如图,图中\(x\)坐标表示选的白色边条数,\(y\)坐标表示获得的权值,那么我 ...
- DevExpress WPF v19.1新版亮点:Data Editors等控件新功能
行业领先的.NET界面控件DevExpress 日前正式发布v19.1版本,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WPFv19.1中新增的一些控件及部分 ...
- ZROI 19.08.01 生成函数方法
写在前面:由于我数学基础不好,加上缺乏生成函数知识,所以这一下午我都处在掉线和非掉线的叠加态.而且我写\(\LaTeX\)很慢,所以笔记相当混乱而且不全面.说白了就是我太菜了听不懂. 1.一般生成函数 ...
- Linux系统中的硬件问题如何排查?(2)
Linux系统中的硬件问题如何排查?(2) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工 ...
- jq实现表格多行列复制
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>&l ...
- UVALive 3211 : Now or later 【2-SAT】
题目链接 题意及题解参见lrj训练指南 #include<bits/stdc++.h> using namespace std; ; struct TwoSAT { int n; vect ...