在这一个部分,主要进行增删改查的示例书写。

增删改查可以基于xml的,也可以基于注解的方式。

一:对单条数据的查询

1.目录结构

  这个使得目录更加清晰

  

2.User.java

  这个使用以前的user表。

  因此,domain不需要改动。

3.配置文件

  重要的参考部分是引用映射文件的部分

 <?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">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3308/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="com/cao/sql/config/users.xml"/>
</mappers> </configuration>

4.映射文件

 <?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="quickFirst">
<resultMap type="com.cao.bean.User" id="User">
<id column="ID" jdbcType="INTEGER" property="id"/>
<result column="NAME" jdbcType="VARCHAR" property="name"/>
<result column="AGE" jdbcType="INTEGER" property="age"/>
</resultMap>
<!-- 单条数据的查询,根据id查询 -->
<select id="selectUserOne" parameterType="int" resultMap="User">
SELECT * From users where id = #{id};
</select>
</mapper>

5.测试类

  这个对于加载的配置文件的方式不同,稍微有点区别,顺便整理一下。

 package com.cao.test1;

 import java.io.IOException;
import java.io.InputStream;
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.cao.bean.User;
/**
* 这是一个对比程序
* 当然也是一个根据条件,进行单条查询的程序
* @author dell
*
*/
public class mainTest {
/**
* 查询单条数据
* 根据id进行查询
* @throws Exception
*/
@Test
public void testSelectOne1() throws Exception {
String resources="/com/cao/config/Configuration.xml"; //这种方式在前面需要加一个/
InputStream is=mainTest.class.getResourceAsStream(resources);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.selectUserOne";
User user=sqlSession.selectOne(statement, 1);
System.out.println(user);
}
@Test
public void testSelectOne2() throws Exception { ////这种方式在前面不需要添加
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.selectUserOne";
User user=sqlSession.selectOne(statement, 2);
System.out.println(user);
}
}

二:插入数据

1.xml

 <!-- 插入数据 -->
<insert id="insertData" parameterType="com.cao.bean.User">
INSERT INTO USERS(name,age) value(#{name},#{age});
</insert>

2.测试程序

 /**
* 插入数据
*/
@Test
public void testInsert()throws Exception {
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.insertData";
int insert=sqlSession.insert(statement, new User(-1,"KK",9));
sqlSession.commit();
System.out.println(insert);
sqlSession.close();
}

3.效果

  打印出1,表示插入一条数据。

  

  数据库:

  

三:删除数据

1.xml

 <!-- 删除数据 -->
<delete id="deleteData" parameterType="int">
DELETE FROM USERS where id=#{id};
</delete>

2.测试程序

 /**
* 删除数据
*/
@Test
public void testDelete()throws Exception {
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.deleteData";
int delete=sqlSession.delete(statement, 4);
System.out.println(delete);
sqlSession.commit();
sqlSession.close();
}

3.效果

  打印出1,表示删除一条数据。

  

  数据库:

  

四:更新数据

1.xml

 <!-- 更新数据 -->
<update id="updateData" parameterType="com.cao.bean.User">
UPDATE USERS set name=#{name},age=#{age} where id=#{id};
</update>

2.测试类

 /**
* 更新数据
*/
@Test
public void testUpdate()throws Exception{
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.updateData";
int update=sqlSession.update(statement, new User(3,"TT",99));
sqlSession.commit();
System.out.println(update);
sqlSession.close(); }

3.效果

  打印1,表示更新一条数据。

  

  数据库:

  

五:完整程序

1.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="quickFirst">
<resultMap type="com.cao.bean.User" id="User">
<id column="ID" jdbcType="INTEGER" property="id"/>
<result column="NAME" jdbcType="VARCHAR" property="name"/>
<result column="AGE" jdbcType="INTEGER" property="age"/>
</resultMap> <!-- 单条数据的查询,根据id查询 -->
<select id="selectUserOne" parameterType="int" resultMap="User">
SELECT * From users where id = #{id};
</select> <!-- 插入数据 -->
<insert id="insertData" parameterType="com.cao.bean.User">
INSERT INTO USERS(name,age) value(#{name},#{age});
</insert> <!-- 删除数据 -->
<delete id="deleteData" parameterType="int">
DELETE FROM USERS where id=#{id};
</delete> <!-- 更新数据 -->
<update id="updateData" parameterType="com.cao.bean.User">
UPDATE USERS set name=#{name},age=#{age} where id=#{id};
</update>
</mapper>

2.测试类

 package com.cao.test1;

 import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.sql.Connection; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.session.TransactionIsolationLevel;
import org.junit.Test; import com.cao.bean.User;
/**
* 这是一个对比程序
* 当然也是一个根据条件,进行单条查询的程序
* @author dell
*
*/
public class mainTest {
/**
* 查询单条数据
* 根据id进行查询
* @throws Exception
*/
@Test
public void testSelectOne1() throws Exception {
String resources="/com/cao/config/Configuration.xml"; //这种方式在前面需要加一个/
InputStream is=mainTest.class.getResourceAsStream(resources);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.selectUserOne";
User user=sqlSession.selectOne(statement, 1);
System.out.println(user);
}
@Test
public void testSelectOne2() throws Exception { ////这种方式在前面不需要添加
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.selectUserOne";
User user=sqlSession.selectOne(statement, 2);
System.out.println(user);
}
/**
* 插入数据
*/
@Test
public void testInsert()throws Exception {
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.insertData";
int insert=sqlSession.insert(statement, new User(-1,"KK",9));
sqlSession.commit();
System.out.println(insert);
sqlSession.close();
}
/**
* 删除数据
*/
@Test
public void testDelete()throws Exception {
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.deleteData";
int delete=sqlSession.delete(statement, 4);
System.out.println(delete);
sqlSession.commit();
sqlSession.close();
}
/**
* 更新数据
*/
@Test
public void testUpdate()throws Exception{
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=sqlSessionFactory.openSession();
String statement="quickFirst.updateData";
int update=sqlSession.update(statement, new User(3,"TT",99));
sqlSession.commit();
System.out.println(update);
sqlSession.close(); } }

六:基于注解的增删改查

1.目录

  

2.接口

 package com.cao.test1;

 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.cao.bean.User; public interface UserMapper {
@Insert("INSERT INTO USERS(name,age) value(#{name},#{age})")
public int add(User user); @Delete("DELETE FROM USERS where id=#{id}")
public int delete(int id); @Update("UPDATE USERS set name=#{name},age=#{age} where id=#{id}")
public int update(User user); @Select("SELECT * From users where id = #{id}")
public User selectById(int id); @Select("SELECT * From users")
public List<User> select();
}

3.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">
<property name="" value=""/>
</transactionManager>
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3308/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments> <mappers>
<mapper class="com.cao.test1.UserMapper"/>
</mappers> </configuration>

4.测试类

 package com.cao.test;

 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.cao.bean.User;
import com.cao.test1.UserMapper; public class MainTest {
@Test
public void test1() throws Exception {
Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession=sqlSessionFactory.openSession(true); //true后是自动提交
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
int add=userMapper.add(new User(-1,"TT",89));
System.out.println(add);
sqlSession.close();
}
}

5.效果

  

  

mybatis中的增删改查操作的更多相关文章

  1. Mybatis中的增删改查

    相比jdbc mybatis在操作数据库方面比jdbc节省了大量的代码,及大量的代码冗余.使得操作起来更加简洁. 在Mapper中分别有着 select,insert, update,delete的这 ...

  2. CI(CodeIgniter)框架中的增删改查操作

    我们创建一个模型( 项目目录/models/),请注意:模型名与文件名相同且必须继承数据核心类CI_Model,同时重载父类中的构造方法 CodeIgniter的数据函数类在 \models\User ...

  3. MyBatis批量增删改查操作

      前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作.前文地址:http://blog.csdn.net/mahoking/article/details/43673741 ...

  4. MyBatis学习之简单增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多

    一.用到的实体类如下: Student.java package com.company.entity; import java.io.Serializable; import java.util.D ...

  5. 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作

    一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...

  6. PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码

    PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...

  7. 48.Python中ORM模型实现mysql数据库基本的增删改查操作

    首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.my ...

  8. 基于SSM之Mybatis接口实现增删改查(CRUD)功能

    国庆已过,要安心的学习了. SSM框架以前做过基本的了解,相比于ssh它更为优秀. 现基于JAVA应用程序用Mybatis接口简单的实现CRUD功能: 基本结构: (PS:其实这个就是用的Mapper ...

  9. mongoVUE的增删改查操作使用说明

    mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...

随机推荐

  1. bzoj3884上帝与集合的正确用法

    Description   根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“ ...

  2. 普通平衡树Treap(含旋转)学习笔记

    浅谈普通平衡树Treap 平衡树,Treap=Tree+heap这是一个很形象的东西 我们要维护一棵树,它满足堆的性质和二叉查找树的性质(BST),这样的二叉树我们叫做平衡树 并且平衡树它的结构是接近 ...

  3. Chart Controls 简介与下载

    虽然博客园已有人介绍过了,还是忍不住介绍一下微软这套免费又功能强大的图表控件「Microsoft Chart Controls for Microsoft .NET Framework 3.5」.本帖 ...

  4. System V 与 POSIX

    System V 以及POSIX 对信号量.共享内存.消息队列等进程之间共享方式提供了自己的解决方案.因此,在学习时难免存在疑惑,到底有什么区别,哪种方式更佳.经过网上搜索各种博客,做出简单的总结. ...

  5. vue-router 编程式导航

    借助vue-router的实例方法,通过编写代码来实现导航的切换: back:回退一步 forward:前进一步 go:指定前进回退步数 push:导航到不同url,向history栈添加一个新的记录 ...

  6. html5 canvas 径向渐变

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. [转载]使用 NuGet 管理项目库

    原文:http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库. 虽然 Mi ...

  8. [BZOJ 4350]括号序列再战猪猪侠 题解(区间DP)

    [BZOJ 4350]括号序列再战猪猪侠 Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个 ...

  9. Centos6.5下升级Python版本

    Cenos6.5升级Python2.6到2.7 1.下载源码包 wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz 2.进行 ...

  10. VCForPython27.msi安装后, 还显示error: Unable to find vcvarsall.bat

    C:\Users\zpc\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC 增加环境变量: SET VCPYTH ...