对Mybatis的初步认识
1、认识Mybatis
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。 MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录.
1)MyBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。(我主要学习java,就讲java的使用)
2)它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
3)mybatis与hibernate的对比?
mybatis提供一种“半自动化”的ORM实现。
这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。
而mybatis的着力点,则在于POJO与SQL之间的映射关系。
2、基于配置文件的CRUD 使用的mybatis的版本是3.1.1
User.java
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(Integer id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
}
User.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.sram.pojo.User">
<!-- 插入语句 -->
<insert id="add" parameterType="com.sram.pojo.User">
INSERT INTO t_user(USERNAME,PASSWORD) VALUES(#{username},#{password});
</insert>
<!-- 更新语句 -->
<update id="update" parameterType="com.sram.pojo.User">
UPDATE t_user SET USERNAME=#{username},PASSWORD=#{password} WHERE ID=#{id};
</update>
<!-- 删除语句 -->
<delete id="delete" parameterType="int">
DELETE FROM t_user WHERE ID=#{id};
</delete>
<!-- 查询集合 -->
<select id="list" resultType="com.sram.pojo.User">
SELECT ID,USERNAME,PASSWORD FROM t_user;
</select>
<!-- 查询单个 -->
<select id="load" resultType="com.sram.pojo.User" parameterType="int">
SELECT ID,USERNAME,PASSWORD FROM t_user where ID=#{id};
</select>
</mapper>
Mybatis获取session的工具类MybatisUtil
public class MyBatiesUtil {
private static SqlSessionFactory factory;
//加载一次配置文件
static{
try {
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}
}
//得到sqlSession
public static SqlSession getSqlSession(){
return factory.openSession();
}
}
数据库的配置文件jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url = jdbc\:mysql\://localhost\:3306/mybatis?useUnicode\=true&characterEncoding\=utf-8
jdbc.username = root
jdbc.password = rrb
日志配置文件log4j.properties
#--------------------------------
#
log4j.rootLogger=INFO, stdout
#log4j.logger.test=info
#log4j.logger.org.apache.jasper = DEBUG
#log4j.logger.org.apache.catalina.startup.TldConfig = DEBUG
#log4j.logger.org.apache.catalina.session.ManagerBase = DEBUG
#log4j.logger.com.fiscal = DEBUG
#log4j.logger.com.system = DEBUG
log4j.logger.com.ibatis = DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.java.sql.ResultSet = INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.fileout=org.apache.log4j.RollingFileAppender
#log4j.appender.fileout.File=e:/log/ibatis.log
#log4j.appender.fileout.MaxFileSize=10000KB
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} :%m%n
#log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
#log4j.appender.fileout.layout.ConversionPattern=[%-5p]_%d{yyyy-MM-dd HH:mm:ss} :%m%n
#log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
# log4j.logger.org=info
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="jdbc.properties"></properties>
<environments default="development">
<environment id="development" >
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 将mapper文件加入到配置文件中 -->
<mappers>
<mapper resource="com/sram/pojo/User.xml"/>
</mappers>
</configuration>
测试CRUD的测试类
public class UserTest {
//测试配置添加方法
@Test
public void add(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
try {
User user = new User("张三","123");
session.insert(User.class.getName()+".add",user);
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
//测试配置更新方法
@Test
public void update(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
try {
User user = new User(9,"李四","567");
session.update(User.class.getName()+".update",user);
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
//测试配置删除方法
@Test
public void delete(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
try {
session.delete(User.class.getName()+".delete",10);
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
//测试配置查询集合方法
@Test
public void list(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
List<User> list = null;
try {
list = session.selectList(User.class.getName()+".list");
System.out.println(list);
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
//测试配置查询单个方法
@Test
public void load(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
try {
User user = session.selectOne(User.class.getName()+".load",9);
System.out.println(user.getUsername());
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
}
3、基于注解的CRUD 使用的mybatis的版本是3.1.1
User.java
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(Integer id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
}
UserMapper.java
public interface UserMapper {
@Insert("INSERT INTO t_user(USERNAME,PASSWORD) VALUES(#{username},#{password})")
public void addUser(User user);
@Update("UPDATE t_user SET USERNAME=#{username},PASSWORD=#{password} WHERE ID=#{id}")
public void update(User user);
@Delete("DELETE FROM t_user WHERE ID=#{id}")
public void delete(int id);
@Select("SELECT ID,USERNAME,PASSWORD FROM t_user")
public List<User> list();
@Select("SELECT ID,USERNAME,PASSWORD FROM t_user where ID=#{id}")
public User load(int id);
}
mybatis获取session的工具类 MybatisUtils.java
public class MyBatisUtil {
private static SqlSessionFactory factory;
//加载一次配置文件
static{
try {
InputStream in = Resources.getResourceAsStream("mybaties-config.xml");
factory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}
}
//得到sqlSession
public static SqlSession getSqlSession(){
return factory.openSession();
}
数据库的配置文件jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url = jdbc\:mysql\://localhost\:3306/mybatis?useUnicode\=true&characterEncoding\=utf-8
jdbc.username = root
jdbc.password = rrb
日志配置文件log4j.properties
#--------------------------------
#
log4j.rootLogger=INFO, stdout
#log4j.logger.test=info
#log4j.logger.org.apache.jasper = DEBUG
#log4j.logger.org.apache.catalina.startup.TldConfig = DEBUG
#log4j.logger.org.apache.catalina.session.ManagerBase = DEBUG
#log4j.logger.com.fiscal = DEBUG
#log4j.logger.com.system = DEBUG
log4j.logger.com.ibatis = DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.java.sql.ResultSet = INFO
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.fileout=org.apache.log4j.RollingFileAppender
#log4j.appender.fileout.File=e:/log/ibatis.log
#log4j.appender.fileout.MaxFileSize=10000KB
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} :%m%n
#log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
#log4j.appender.fileout.layout.ConversionPattern=[%-5p]_%d{yyyy-MM-dd HH:mm:ss} :%m%n
#log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
# log4j.logger.org=info
mybatis配置文件mybatis-confg.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="jdbc.properties"></properties>
<environments default="development">
<environment id="development" >
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 将mapper文件加入到配置文件中 -->
<mappers>
<mapper class="com.sram.mapper.UserMapper"/>
</mappers>
</configuration>
测试类
public class UserTest {
//测试注解添加方法
@Test
public void add(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
try {
User user = new User("张三","123");
session.getMapper(UserMapper.class).addUser(user);
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
//测试注解更新方法
@Test
public void update(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
try {
User user = new User(13,"李四","567");
session.getMapper(UserMapper.class).update(user);
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
//测试注解删除方法
@Test
public void delete(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
try {
session.getMapper(UserMapper.class).delete(14);
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
//测试注解查询集合方法
@Test
public void list(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
List<User> list = null;
try {
list = session.getMapper(UserMapper.class).list();
System.out.println(list);
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
//测试注解查询单个方法
@Test
public void load(){
//得到sqlSession
SqlSession session = MyBatiesUtil.getSqlSession();
try {
User user = session.getMapper(UserMapper.class).load(13);
System.out.println(user);
//事务提交
session.commit();
session.close();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}
}
对Mybatis的初步认识的更多相关文章
- java 持久框架mybatis的初步学习
什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBati ...
- Mybatis的初步使用
MyBatis 是当下最流行的持久层框架,也是ORM框架,本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google ...
- Mybatis学习-初步认知与使用
Mybatis是一款优秀的持久层框架.且支持定制化SQL,存储过程以及高级映射 Mybatis几乎免除了所有的JDBC代码以及设置参数和获取结果集的工作,它使用简单的XML或注解来配置原始类型.接口和 ...
- (一)Mybatis之初步接触
Maven的安装及环境配置 安装及配置只需按照以下三个链接的步骤走 撸帝的博客https://www.funtl.com/zh/maven/Maven-%E5%AE%89%E8%A3%85%E9%85 ...
- 初识 tk.mybatis.mapper
在博客园发表Mybatis Dynamic Query后,一位园友问我知不知道通用mapper,仔细去找了一下,还真的有啊,比较好的就是abel533写的tk.mybatis.mapper. 本次例子 ...
- 初识 tk.mybatis.mapper 通用mapper
在博客园发表Mybatis Dynamic Query后,一位园友问我知不知道通用mapper,仔细去找了一下,还真的有啊,比较好的就是abel533写的tk.mybatis.mapper. 本次例子 ...
- mybatis源码-解析配置文件(二)之解析的流程
目录 1. 简介 2. 配置文件解析流程分析 2.1 调用 2.2 解析的目的 2.3 XML 解析流程 2.3.1 build(parser) 2.3.2 new XMLConfigBuilder( ...
- mybatis源码-解析配置文件(一)之XML的DOM解析方式
目录 简介 Java 中 XML 文件解析 解析方式 DOM 解析 XML 新建 XML 文件 DOM 操作相关类 Java 读取 XML 文件 一起学 mybatis @ 简介 在之前的文章< ...
- SSM初步整合一
SSM(spring+springmvc+mybatis)初步整合一配置步骤: 步骤一.导入所需jar包 步骤二 .配置web.xml文件 <?xml version="1.0&quo ...
随机推荐
- [agc004f]Namori 贪心
Description 现在给你一张NN个点MM条边的连通图,我们保证N−1≤M≤NN−1≤M≤N,且无重边和自环. 每一个点都有一种颜色,非黑即白.初始时,所有点都是白色的. 想通过执行 ...
- [arc076F]Exhausted? 贪心+堆
Description 有m个椅子,第i个在位置i,每个椅子只能坐一个人. 有n个人,第i个人能坐的椅子的位置j需满足j≤Li或j≥Ri. 现在你可以添加若干个椅子,可以放在任意实数位置.问最 ...
- [ActionScript 3.0] PrintJob打印功能
package { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.MouseEvent; ...
- JAVA将秒的总和转换成时分秒的格式
public static void main(String[] args) { String str = "221"; int seconds = Integer.parseIn ...
- Jmeter Grafana Influxdb 环境搭建
1.软件安装 1.Grafana安装 本文仅涉及Centos环境 新建Grafana yum源文件 /etc/yum.repos.d/grafana.repo [grafana] name=grafa ...
- PHP会话cookie类的封装
<?php header('content-type:text/html;charset=utf-8');/** * 完成cookie的设置.删除.更新.读取 */class Cookie{ ...
- MonoGame2D - MonoGame的2D威力加强版
简介MonoGame2D 是一款基于MonoGame的扩展工具包,对MonoGame的2D开发方面进行了扩展,主要增加了精灵,字体,地图,组件,GUI等游戏开发中的一些基本元素,以更方便快捷地进行2D ...
- oracle闪回(flashback)的部分实用操作(彻底删除的除外)
一.数据delete并且commit提交之后的闪回 (一):根据时间来恢复:1.查询数据库当前时间(目的是为了检查数据库时间是否与你电脑时间相近,避免时间不同而将数据恢复到错误时间点)select ...
- win 10安装应用程序提示Error 1317的解决方法
打开windows防火墙 关闭文件夹权限访问保护
- js中this那些事儿
前几天写东西由于恶趣味作祟将所有的函数全部封装在json中,起初好好的,函数B也可以调用函数A的内容,不过在写一个点击事件时出现了意外, 代码如下: var $ ={ "A":fu ...