这一篇讲述MyBatis对数据库的CRUD操作,内容不做重复,只做添加:查看学习总结1

一、使用MyBatis对表执行CRUD操作——基于XML的实现

在SQL映射文件userMapper.xml中添加

<!-- 增加用户 -->
<insert id="addUser" parameterType="com.tfj.domain.User">
insert into users(name,age)
values(#{name},#{age})
</insert>
<!-- 删除用户 -->
<delete id="deleteUserById" parameterType="int">
delete from users where
id=#{id}
</delete>
<!-- 修改用户 -->
<update id="updateUserById" parameterType="com.tfj.domain.User">
update users set
name=#{name},age=#{age} where id=#{id}
</update>
<!-- 获取全部用户 -->
<select id="getAllUsers" resultType="com.tfj.domain.User">
select * from users
</select>

映射封装类->CRUDByXmlMapper.java

package com.tfj.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.tfj.domain.User;
import com.tfj.util.MyBatisUtil; public class CRUDByXmlMapper { public void insert() {
// SqlSession sqlSession = MyBatisUtil.getSqlSession(false);
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
/**
* 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* addUser是insert标签的id属性值,通过insert标签的id属性值就可以找到要执行的SQL
*/
String statement = "com.tfj.mapping.userMapper.addUser";// 映射sql的标识字符串
User user = new User();
user.setName("AfterInsert");
user.setAge(20);
// 执行插入操作
int retResult = sqlSession.insert(statement, user);
// 手动提交事务
// sqlSession.commit();
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);
} public void update() {
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
/**
* 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* updateUser是update标签的id属性值,通过update标签的id属性值就可以找到要执行的SQL
*/
String statement = "com.tfj.mapping.userMapper.updateUserById";// 映射sql的标识字符串
User user = new User();
user.setId(1);
user.setName("AfterUpdate");
user.setAge(25);
// 执行修改操作
int retResult = sqlSession.update(statement, user);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);
} public void delete() {
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
/**
* 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* deleteUser是delete标签的id属性值,通过delete标签的id属性值就可以找到要执行的SQL
*/
String statement = "com.tfj.mapping.userMapper.deleteUserById";// 映射sql的标识字符串
// 执行删除操作
int retResult = sqlSession.delete(statement, 1);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);
} public void select() {
SqlSession sqlSession = MyBatisUtil.getSqlSession();
/**
* 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getAllUsers是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "com.tfj.mapping.userMapper.getUserById";// 映射sql的标识字符串
// 执行查询返回一个唯一user对象的sql
User user = sqlSession.selectOne(statement, 1);
System.out.println(user);
} public void selectAll() {
SqlSession sqlSession = MyBatisUtil.getSqlSession();
/**
* 映射sql的标识字符串, com.tfj.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getAllUsers是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "com.tfj.mapping.userMapper.getAllUsers";// 映射sql的标识字符串
// 执行查询操作,将查询结果自动封装成List<User>返回
List<User> lstUsers = sqlSession.selectList(statement);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
     for(User lsts:lstUsers){
System.out.println(lsts);
}
}
}

工具类(后续将一直使用)->MyBatisUtil.java

package com.tfj.util;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil { /**
* 获取SqlSessionFactory
*
* @return SqlSessionFactory
*/
public static SqlSessionFactory getSqlSessionFactory() {
String resource = "conf.xml";
InputStream is = MyBatisUtil.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
return factory;
} /**
* 获取SqlSession
*
* @return SqlSession
*/
public static SqlSession getSqlSession() {
return getSqlSessionFactory().openSession();
} /**
* 获取SqlSession
*
* @param isAutoCommit
* true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务 false
* 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务
* @return SqlSession
*/
public static SqlSession getSqlSession(boolean isAutoCommit) {
return getSqlSessionFactory().openSession(isAutoCommit);
}
}

测试类->CRUDTest.java

package com.tfj.test;

public class CRUDTest {
public static void main(String[] args) {
// 每次进行操作后都查询全部用户,从而观察变化
CRUDByXmlMapper testCRUDByXmlMapper = new CRUDByXmlMapper();
System.out.println("-------------------------");
System.out.println("Look getAllUsers");
testCRUDByXmlMapper.selectAll();
System.out.println("-------------------------");
System.out.println("Look after updateUser");
testCRUDByXmlMapper.update();
testCRUDByXmlMapper.selectAll();
System.out.println("-------------------------");
System.out.println("Look after delete");
testCRUDByXmlMapper.delete();
testCRUDByXmlMapper.selectAll();
System.out.println("-------------------------");
System.out.println("Look after insert");
testCRUDByXmlMapper.insert();
testCRUDByXmlMapper.selectAll(); }
}

二、使用MyBatis对表执行CRUD操作——基于注解的实现

1、定义SQL映射的接口

UserMapperI接口的代码如下:

UserMapperI.java

package com.tfj.mapping;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import com.tfj.domain.User; /**
* @author gacl 定义sql映射的接口,使用注解指明方法要执行的SQL
*/
public interface UserMapperI { // 使用@Insert注解指明insert方法要执行的SQL
@Insert("insert into users(name, age) values(#{name}, #{age})")
public int insert(User user); // 使用@Delete注解指明delete方法要执行的SQL
@Delete("delete from users where id=#{id}")
public int delete(int id); // 使用@Update注解指明update方法要执行的SQL
@Update("update users set name=#{name},age=#{age} where id=#{id}")
public int update(User user); // 使用@Select注解指明select方法要执行的SQL
@Select("select * from users where id=#{id}")
public User select(int id); // 使用@Select注解指明selectAll方法要执行的SQL
@Select("select * from users")
public List<User> selectAll();
}

在配置文件conf.xml中添加这个注解接口

        <!-- 注册UserMapper映射接口 -->
<mapper class="com.tfj.mapping.UserMapperI" />

映射封装类->CRUDByAnnotationMapper.java

package com.tfj.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.tfj.domain.User;
import com.tfj.mapping.UserMapperI;
import com.tfj.util.MyBatisUtil; public class CRUDByAnnotationMapper { public void insert() {
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
User user = new User();
user.setName("tufujie");
user.setAge(20);
int add = mapper.insert(user);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(add);
} public void update() {
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
User user = new User();
user.setId(3);
user.setName("Jacksile");
user.setAge(26);
// 执行修改操作
int retResult = mapper.update(user);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);
} public void delete() {
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
// 执行删除操作
int retResult = mapper.delete(1);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);
} public void select() {
SqlSession sqlSession = MyBatisUtil.getSqlSession();
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
// 执行查询操作,将查询结果自动封装成User返回
User user = mapper.select(2);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(user);
} public void selectAll() {
SqlSession sqlSession = MyBatisUtil.getSqlSession();
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
// 执行查询操作,将查询结果自动封装成List<User>返回
List<User> lstUsers = mapper.selectAll();
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
     for(User lsts:lstUsers){
System.out.println(lsts);
}
}
}

测试类->CRUDTest2.java

package com.tfj.test;

public class CRUDTest2 {
public static void main(String[] args) {
// 每次进行操作后都查询全部用户,从而观察变化
CRUDByAnnotationMapper testCRUDByXmlMapper = new CRUDByAnnotationMapper();
System.out.println("-------------------------");
System.out.println("Look after getUser id=2");
testCRUDByXmlMapper.select();
System.out.println("Look after getAllUsers");
testCRUDByXmlMapper.selectAll();
System.out.println("-------------------------");
System.out.println("Look after updateUser");
testCRUDByXmlMapper.update();
testCRUDByXmlMapper.selectAll();
System.out.println("-------------------------");
System.out.println("Look after delete");
testCRUDByXmlMapper.delete();
testCRUDByXmlMapper.selectAll();
System.out.println("-------------------------");
System.out.println("Look after insert");
testCRUDByXmlMapper.insert();
testCRUDByXmlMapper.selectAll(); }
}

MyBatis学习总结2的更多相关文章

  1. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  2. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: m ...

  3. MyBatis学习总结(七)——Mybatis缓存(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...

  4. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

  5. (原创)mybatis学习一,夯实基础

    一,what?(是什么) MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...

  6. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...

  7. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  8. 【Todo】Mybatis学习-偏理论

    之前写过好几篇Mybatis相关的文章: http://www.cnblogs.com/charlesblc/p/5906431.html  <SSM(SpringMVC+Spring+Myba ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  10. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

随机推荐

  1. 第九篇、UITabbar增加类别用来标红点

    1.系统中只有设置bage的方式,设置为nil也是为一个红点,但是很大,并不是我们需要的 2.扩充标红点的方法 (常用于有新的动态提示标志) #import <UIKit/UIKit.h> ...

  2. .net远程连接oracle数据库不用安装oracle客户端

    asp.net远程连接oracle数据库不用安装oracle客户端的方法下面是asp.net连接远程Oracle数据库服务器步骤: 1.asp.net连接oracle服务器需要添加Sytem.Data ...

  3. bzoj1016:[JSOI2008]最小生成树计数

    思路:模拟kruskal的过程,可以发现对于所有权值相同的边,有很多种选择的方案,而且权值不同的边并不会相互影响,因为先考虑权值较小的边,权值比当前权值大的边显然不在考虑范围之内,而权值比当前权值小的 ...

  4. c#编写简单计算器

    刚接触c#,依照惯例,写个简单的计算器,只写了加法,乘法,其他的类似,编辑器用的vs2008 首先打开vs ,新建c#的Windows窗体应用程序,接下来的项目的名称是WindowsFormsAppl ...

  5. 学习C++ Primer 的个人理解(六)

    第四章和第五章没什么特别的.基本上就是书本上的字面意思,也没什么需要注意的细节.直接记录第六章. 本章介绍了函数,其实也没什么特别的.但有几个重点 1.形参的类型决定了形参和实参的交互方式.形参是引用 ...

  6. 带你初识Angular中MVC模型

    简介 MVC是一种使用 MVC(Model View Controller 模型-视图-控制器)设计模式,该模型的理念也被许多框架所吸纳,比如,后端框架(Struts.Spring MVC等).前端框 ...

  7. BootstrapDialog.show函数底层简化

    平台用的全部都是BootStrapDialog的弹窗,然后美工设计了一个统一的样式,每次写的时候,都要对其进行样式重写:写吐了快,所以对BootStrap.底层做了修改: 也就是说,只要你要写的界面包 ...

  8. 关于为什么window.frames[0].src不能获取src

    在DOM文档对象模型中,window对象处于最高层,而框架除了是当前窗体的一个节点外,本身也是独立window对象,当frames作为window对象时,有name属性, 而没有src属性,只有作为节 ...

  9. php导出word(可包含图片)

    为大家介绍一个 php 生成 导出word(可包含图片)的代码,有需要的朋友可以参考下. 之前介绍过php生成word的例子,只是不能包含图片与链接. 今天 为大家介绍一个 php 生成 导出word ...

  10. CentOS 最小化安装后安装桌面

    通过yum的方式安装: yum groupinstall -y   "Desktop"   "Desktop Platform"   "Desktop ...