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

增删改查可以基于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. HGOI2010816 (NOIP 提高组模拟赛 day1)

    Day1 210pts(含T1莫名的-10pts和T3莫名的-30pts) 100+70+40=210 rank 29 这道题第一眼看是字符串匹配问题什么KMP啊,又想KMP不会做啊,那就RK Has ...

  2. 【转】Altium Designer 3D封装下载及导入教程

    首先 先晒几个图:是不是很逼真啊.. ---------------------------------------教程---------------------------------------- ...

  3. (转)Maven学习总结(六)——Maven与Eclipse整合

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(六)——Maven与Eclipse整合 一.安装Maven插件 下载下来的maven插件如下图所示:,插件存放的路径是:E:/MavenP ...

  4. 样本服从正态分布,证明样本容量n乘样本方差与总体方差之比服从卡方分布x^2(n)

    样本服从正态分布,证明样本容量n乘样本方差与总体方差之比服从卡方分布x^2(n) 正态分布的n阶中心矩参见: http://www.doc88.com/p-334742692198.html

  5. 实战:使用SVN+apache搭建一个版本控制服务器

    今天讲的内容: 实战:使用SVN+apache搭建一个版本控制服务器 每天: 10:00 晚上:21:00 服务端:xuegod63.cn   IP:192.168.10.63 服务概述: SVN(s ...

  6. Go 语言编程规范

    1. gofmt 命令 大部分的格式问题可以通过 gofmt 来解决,gofmt 自动格式化代码,保证所有的 go 代码与官方推荐的格式保持一致,所有格式有关问题,都以gofmt的结果为准.所以,建议 ...

  7. spring JMS在接收消息的时候总是报错

    spring JMS在接收消息的时候总是报错 org.springframework.jms.UncategorizedJmsException: Uncategorized exception oc ...

  8. POJ - 3436 ACM Computer Factory(最大流)

    https://vjudge.net/problem/POJ-3436 题目描述:  正如你所知道的,ACM 竞赛中所有竞赛队伍使用的计算机必须是相同的,以保证参赛者在公平的环境下竞争.这就是所有这些 ...

  9. bzoj千题计划267:bzoj3129: [Sdoi2013]方程

    http://www.lydsy.com/JudgeOnline/problem.php?id=3129 如果没有Ai的限制,就是隔板法,C(m-1,n-1) >=Ai 的限制:m减去Ai &l ...

  10. 【Python】使用Python将Shellcode转换成汇编

    1.介绍 需要多少行代码转换hex成反汇编呢? 多亏了Python的Capstone库,做这件事只需要五行. 在二进制分析中,进行Exploit开发或逆向工程时,需要快速将十六进制的Shellcode ...