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

增删改查可以基于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. 【BZOJ1303】[CQOI2009]中位数图(模拟)

    [BZOJ1303][CQOI2009]中位数图(模拟) 题面 BZOJ 洛谷 题解 把大于\(b\)的数设为\(1\),小于\(b\)的数设为\(-1\).显然询问就是有多少个横跨了\(b\)这个数 ...

  2. 洛谷P1280 尼克的任务

    这个DP气死我了.....写的时候脑子比较迟钝于是爆0了好几次,最后还是我旁边的AKIOI巨佬告诉我解法才会做. 我一开始设计的状态是f[i]表示i时刻正在休息,从1到i的最长休息时间. 然后经历了各 ...

  3. 遭遇:“传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确” 错误

    http://www.cnblogs.com/delphinet/archive/2010/03/09/1681777.html 正在写一个类似文章的发表系统.其中记录文章内容的字段Contents设 ...

  4. HDU 6170 dp

    Two strings Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  5. SSM框架的搭建与测试

    关于框架的搭建无非就是 框架所依赖的jar包,然后就是关于各个框架的配置文件: 下面我们来看下不同层的依赖的jar包以及各个配置文件: 首先pojo这一层只需要依赖parent聚合工程 mapper层 ...

  6. Solr记录-solr文档xml

    Solr添加文档(XML) 在上一章中,我们学习解释了如何向Solr中添加JSON和.CSV文件格式的数据.在本章中,将演示如何使用XML文档格式在Apache Solr索引中添加数据. 示例数据 假 ...

  7. 运行fdisk命令时,弹出 bash:fdisk:command not found

    原因:命令fdisk 不在你的命令搜索路径中 第一种解决办法,将fdisk添加到你的命令搜索路径中 首先查看你当前的命令搜索路径: [root@host sbin]# echo $PATH/usr/k ...

  8. python assert 断言语句的作用

    python assert 断言语句的作用 assert语句的应用场景 使用assert语句是一个很好的习惯. 我们在编写代码的时候, 不知道程序会在什么时候崩溃, 与其让它在深度运行时崩溃, 不如预 ...

  9. ie6下的line-height属性

    line-height这个属性是被ie6所支持的. 当是当一个父级元素内的子元素,包含了文字,且文字和img,input,label,span这些内联元素连接在一起的时候,你对父级元素设置line-h ...

  10. sequelize初使用

    官网地址:Sequelize Sequelize is a promise-based ORM for Node.js v4 and up. It supports the dialects Post ...