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"的缩写,中文意思是"简单网络管理协议& ...
随机推荐
- git add 时忽略某些文件或者文件夹
1.git bash 新建 .gitignore文件 touch .gitignore 2.修改.gitignore文件,如下 target/ !.mvn/wrapper/maven-wrapper ...
- ios 软键盘弹出布局被顶上去 已解决
document.body.addEventListener('focusout', () => { //软键盘收起的事件处理 set ...
- wamp 增加mongodb拓展 安装
安装环境: windows 7 64bit php 5.5.12 确认环境参数: 1.在phpinfo() 中查看compiler 2.在phpinfo() 中查看thread safety,线程是否 ...
- PP: Data-driven classification of residential energy consumption patterns by means of functional connectivity networks
Purpose Implement a good user aggregation and classification. or to assess the interrelation pattern ...
- nginx的错误处理
以下是针对nginx发生错误的处理方案(将会持续更新) 遇到 nginx: [error] invalid PID number "" in "/var/run/ngin ...
- F与Q查询
F查询: 之前构造的过滤器都是将字段值与某个我们设定的常亮做比较,如果我们要对两个字段的字段的值做比较久需要用到F查询:F查询可以用来比较同一个model事例中两个不同字段的值, 准备工作: 创建数据 ...
- 将项目部署到linux环境下的Jetty
1.将项目放到webapps文件夹下 2.进入到jetty/bin目录,有文件jetty.sh 3.运行 命令:./jetty.sh start 4.停止 命令:./jetty.sh stop
- Bayer Pattern
在刚加入工作的时候,听到最多的就是RGGB Bayer Pattern.在之前的接触中,一直默认一张图片的每个像素点有RGB三个分量,那“RGGB Bayer Pattern”究竟是什么意思.在网上查 ...
- 第四十一篇 入门机器学习——Numpy的基本操作——聚合操作
No.1. 对向量元素求和使用np.sum,也可以使用类似big_array.sum()的方式 No.2. 对向量元素求最小值使用np.min,求最大值使用np.max,也可以使用类似big_arra ...
- HTML5-语义化
什么是语义化?就是用合理.正确的标签来展示内容,比如h1~h6定义标题. 语义化优点: 易于用户阅读,样式丢失的时候能让页面呈现清晰的结构. 有利于SEO,搜索引擎根据标签来确定上下文和各个关键字的权 ...