mybatis-01-简单概述基础点
1、mybatis的优点
mybatis:半自动化持久化框架
- sql(专注数据)和java编码(专注业务)分离
- 可使用简单的xml或者注解用于配置和原始映射
- 将接口和java中的pojo映射成数据库中的记录
- 可以理解为:业务代码+底层数据库的媒介
2、创建mybatis的步骤(一)---配置
- 创建数据库、建表
- 搭建开发环境
- 导入jar包
log4j-1.2.17.jar
mybatis-3.4.1.jar
mysql-connector-java-5.1.7-bin.jar
- 添加配置文件
mybatis-config.xml
- 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最终结构可参照下方图片:
3、创建mybatis的步骤(二)---代码
①创建pojo对象User
public class User {
private int id;
private String lastName;
private int sex;
}
②在src目录创建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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- dataSource 数据源
POOLED 表示使用数据库连接池
-->
<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="root" /> (数据库密码)
</dataSource>
</environment>
</environments>
<!-- 引入sql语句对应的配置文件 -->
<mappers>
<mapper resource="com/atguigu/pojo/UserMapper.xml" /> (根据自己UserMapper.xml的位置更改路径,也可以写成通用的包名)
</mappers>
</configuration>
③创建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">
<!-- 注释
namespace 属性一般情况下。
一种定义规则:
①使用对流的javaBean的全类名
②使用Mapper接口的全类名
-->
<mapper namespace="com.atguigu.pojo.User"> (此处写全类名)
<!-- 此处写相应的SQL语句 增删改查 -->
</mapper>
④配置mybatis配置文件的提示:
Config 文件的 key: http://mybatis.org/dtd/mybatis-3-config.dtd
mapper文件的key: http://mybatis.org/dtd/mybatis-3-mapper.dtd
- 搜索xml --双击子文件 XML Catalog
- add--进行添加
- key--输入对应的Configuration和mapper的约束条件(dtd文件)
- URI---一定要选择URI
- File System 选择本地对应的文件添加
可以按照图中的结构进行建包,进行编码测试

⑤创建UserMapper接口
public interface UserMapper {
/*
* 1、根据编号查询用户信息
* 2、查询所有用户信息
* 3、添加用户信息
* 4、删除用户信息
* 5、更新用户信息
*/
public User findUserById(int id);
public List<User> allFindUser();
public int saveUser(User user);
public int updateUser(User user);
public int deleteUser(int id);
}
⑥创建UserMapperTest类
import java.io.IOException;
import java.sql.Connection;
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.Before;
import org.junit.Test;
import com.atguigu.mapper.UserMapper;
import com.atguigu.pojo.User;
(此处是通用代码)
@SuppressWarnings("unused")
public class UserMapperTest {
private SqlSessionFactory factory;
@Before
public void before(){
try {
factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
} catch (IOException e) {
e.printStackTrace();
}
} @Test
//根据id查找
public void testFindUserById() {
/*
* 1.factory创建session
* 2.session通过代理模式 创建Mapper的实体类
* 3、mapper实体类执行方法 并获取返回值
* 4、输出内容
* 5、关流
*/
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.findUserById(1);
System.out.println(user);
session.close();
} @Test
//查找所有
public void testAllFindUser() {
/*
* 1.factory创建session
* 2.session通过代理模式 创建Mapper的实体类
* 3、mapper实体类执行方法 并获取返回值
* 4、输出内容
* 5、关流
*/
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> list = userMapper.allFindUser();
System.out.println(list);
session.close();
} @Test
//添加
public void testAddUser(){
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
int saveUser = userMapper.saveUser(new User(1,"冷清秋",1));
session.commit(); (需要进行提交,||不提交的结果:运行成功,但数据库无值)
System.out.println(saveUser);
session.close();
} @Test
//修改
public void testUpdateUser(){
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
int updateUser = userMapper.updateUser(new User(1,"zhangsan",0));
session.commit();
System.out.println(updateUser);
session.close();
} @Test
//删除
public void deleteUser() {
SqlSession session = factory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
int deleteUser = userMapper.deleteUser(12);
session.commit();
System.out.println(deleteUser);
session.close();
}
}
⑦对应的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.atguigu.mapper.UserMapper">
<!--
namespace:名称空间(自定义名字)
id:唯一标识
resultType:返回值类型(写返回值类型的全类名)
#{id}:从传递过来的参数中取出id值
-->
<!-- public User findUserById(int id); -->
<select id="findUserById" resultType="cn.aynu.pojo.User">
select* from user where id = #{id}
</select> <!-- public List<User> allFindUser(); -->
<select id="allFindUser" resultType="cn.aynu.pojo.User">
select id,name,sex from user
</select> <insert id="saveUser" parameterType="cn.aynu.pojo.User">
insert into user(name,sex) values(#{name},#{sex})
</insert> <update id="updateUser">
update user set name = #{name},sex=#{sex} where id = #{id}
</update> <delete id="deleteUser">
delete from user where id = #{id}
</delete>
</mapper>
敲小黑板:
1、当返回值是void的时候,resultType可以省略不写
2、当数据是基本数据类型的时候,resulttype可以省略不写
但是建议全部都加上,代码更规范,别人看之后通俗易懂,id和resultType一一对应
***不加resultType的错误***

mybatis-01-简单概述基础点的更多相关文章
- MyBatis 01 概述
官网 http://www.mybatis.org/mybatis-3/zh/index.html GitHub https://github.com/mybatis/mybatis-3 简介 MyB ...
- Java多线程| 01 | 线程概述
Java多线程| 01 | 线程概述 线程相关概念 进程与线程 进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位.可以把进程简单的理解 ...
- Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...
- Java虚拟机JVM学习01 流程概述
Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...
- [转载]SharePoint 2013搜索学习笔记之搜索构架简单概述
Sharepoint搜索引擎主要由6种组件构成,他们分别是爬网组件,内容处理组件,分析处理组件,索引组件,查询处理组件,搜索管理组件.可以将这6种组件分别部署到Sharepoint场内的多个服务器上, ...
- SNMP学习笔记之SNMP简单概述
0x00 SNMP简单概述 0.1.什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理 ...
- Mybatis框架简单使用
Mybatis框架简单使用 环境搭建 新建一个JavaWeb项目,在web\WEB-INF\创建lib文件,并且在其下添加Mybatis的核心包以及依赖包,以及Mysql驱动包,junit4测试包等. ...
- MyBatis(1)-简单入门
简介 什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.My ...
- MyBatis 使用简单的 XML或注解用于配置和原始映射
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .My ...
- SNMP简单概述
一.SNMP简单概述 1.1.什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议& ...
随机推荐
- ASP.NET Identity系列教程-1目录
https://www.cnblogs.com/hao-1234-1234/p/8857437.html ASP.NET Identity系列教程 13 Getting Started with Id ...
- javascript脚本混淆
javascript脚本混淆 脚本病毒是一个一直以来就存在,且长期活跃着的一种与PE病毒完全不同的一类病毒类型,其制作的门槛低.混淆加密方式的千变万化,容易传播.容易躲避检测,不为广大网民熟知等诸多 ...
- 16day 路径信息系列
../ 上一级目录 ./ 当前路径 ~ 返回到家目录 - 两个目录之间进行快速切换 An argument of - is equivalent to $OLDPWD(环境变量) 补充说明: [roo ...
- Python中super的用法【转载】
Python中super的用法[转载] 转载dxk_093812 最后发布于2019-02-17 20:12:18 阅读数 1143 收藏 展开 转载自 Python面向对象中super用法与MRO ...
- Allegro 串扰仿真
利用于博士的那个电路板,看一下cadence软件的串扰仿真,我们选取3跟信号线,见下图. U6.N3-R36-U7.56 U6.P3-R36-U7.54 U6.P2-R36-U7.53 下面启动sig ...
- Oracle 12.2.0.1 Installation Fails With "PRVG-0449"
Mac 电脑虚拟机 Parallels 中进行Oracle 12.2.0.1 数据库软件安装时,预环境检查过程中,提示堆栈大小限制[失败],即使修复问题依然如故. Oracle 12.2.0.1 In ...
- 解决windows配置visual studio code调试golang环境问题
写这篇随笔是为了Mark下在这个过程中配到的几个问题 1.具体过程可参考https://www.cnblogs.com/JerryNo1/p/5412864.html,Jerry博主写的非常详细了 1 ...
- java多线程--死锁
1. Java中导致死锁的原因 Java中死锁最简单的情况是,一个线程T1持有锁L1并且申请获得锁L2,而另一个线程T2持有锁L2并且申请获得锁L1,因为默认的锁申请操作都是阻塞的,所以线程T1和T2 ...
- S3C2440之存储控制器学习记录
/==========翻译S3C2440存储控制器部分================/ 5 存储控制器 概述 S3C2440内存控制器为外部存储访问提供内存控制信号. S3C2440A有如下特征: ...
- 微信或QQ屏蔽了我的域名,已经被微信屏蔽的域名如何在微信打开,如何进行微信域名防封?
微信域名完全防封是绝对不可能的,这是必须明确的,曾经有人打折<不死域名>的概念,它不是不死,是稍微命长一点,在推广上成本更低一下,效果更好一些, 主要的技术原理是利用了腾讯云的域名安全联盟 ...