mybatis中的增删改查操作
在这一个部分,主要进行增删改查的示例书写。
增删改查可以基于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中的增删改查操作的更多相关文章
- Mybatis中的增删改查
相比jdbc mybatis在操作数据库方面比jdbc节省了大量的代码,及大量的代码冗余.使得操作起来更加简洁. 在Mapper中分别有着 select,insert, update,delete的这 ...
- CI(CodeIgniter)框架中的增删改查操作
我们创建一个模型( 项目目录/models/),请注意:模型名与文件名相同且必须继承数据核心类CI_Model,同时重载父类中的构造方法 CodeIgniter的数据函数类在 \models\User ...
- MyBatis批量增删改查操作
前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作.前文地址:http://blog.csdn.net/mahoking/article/details/43673741 ...
- MyBatis学习之简单增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多
一.用到的实体类如下: Student.java package com.company.entity; import java.io.Serializable; import java.util.D ...
- 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作
一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...
- 48.Python中ORM模型实现mysql数据库基本的增删改查操作
首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.my ...
- 基于SSM之Mybatis接口实现增删改查(CRUD)功能
国庆已过,要安心的学习了. SSM框架以前做过基本的了解,相比于ssh它更为优秀. 现基于JAVA应用程序用Mybatis接口简单的实现CRUD功能: 基本结构: (PS:其实这个就是用的Mapper ...
- mongoVUE的增删改查操作使用说明
mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...
随机推荐
- Mybatis.xml文件中大于小于等于
第一种写法: 原符号 < <= > >= & ' "替换符号 < <= > >= & ' "例如: ...
- 素数筛选法(prime seive)
素数筛选法比较有名的,较常用的是Sieve of Eratosthenes,为古希腊数学家埃拉托色尼(Eratosthenes 274B.C.-194B.C.)提出的一种筛选法.详细步骤及图示讲解,还 ...
- python(27) 抓取淘宝买家秀
selenium 是Web应用测试工具,可以利用selenium和python,以及chromedriver等工具实现一些动态加密网站的抓取.本文利用这些工具抓取淘宝内衣评价买家秀图片. 准备工作 下 ...
- valgrind使用指南
http://note.youdao.com/noteshare?id=5de9c049ccdb1defdc4368db83813dd3
- lrzsz 移植到 ARM-linux 嵌入式板子上
特别说明:SSH 或 串口 都可以使用 lrzsz 进行通信 lrzsz是一个Unix通信包,提供XMODEM.YMODEM和ZMODEM文件传输协议.lrzsz以前是Omen科技的主打软件,现在已经 ...
- 解决小米note5 安装了google play store 打不开的问题
打不开的原因是缺少了google play store 运行的一些后台程序 去豌豆荚下载如下谷歌安装器(注:安装器有很多种,我试了如下这种成功) 重启手机,google play store 即可正常 ...
- Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)
Hadoop生态圈-Flume的组件之自定义拦截器(interceptor) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是举例了一个自定义拦截器的方法,测试字节传输速 ...
- NOI2001 方程的解数(双向搜索)
solution 一道非常经典的双向搜索题目,先将前3个未知数枚举一遍得到方程的前半部分所有可能的值,取负存入第一个队列中再将后3个未知数枚举一遍,存入第二个队列中.这样我们只要匹配两个队列中相同的元 ...
- ZYNQ. DMA基本用法
DMA环路测试 vivadoblock zynq7 + dma +fifo sdk 中可以导入 demo demo 中 默认都是 一个字节8bit数据 的测试程序. 如果是其他长度的数据,不仅要修改数 ...
- jquery.form.js 让表单提交更优雅
jquery.form.js 让表单提交更优雅.可以页面不刷新提交表单,比jQuery的ajax提交要功能强大. 1.引入 <script src="/src/jquery-1.9.1 ...