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}区,查询条件格式{& ...
随机推荐
- HGOI2010816 (NOIP 提高组模拟赛 day1)
Day1 210pts(含T1莫名的-10pts和T3莫名的-30pts) 100+70+40=210 rank 29 这道题第一眼看是字符串匹配问题什么KMP啊,又想KMP不会做啊,那就RK Has ...
- 【转】Altium Designer 3D封装下载及导入教程
首先 先晒几个图:是不是很逼真啊.. ---------------------------------------教程---------------------------------------- ...
- (转)Maven学习总结(六)——Maven与Eclipse整合
孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(六)——Maven与Eclipse整合 一.安装Maven插件 下载下来的maven插件如下图所示:,插件存放的路径是:E:/MavenP ...
- 样本服从正态分布,证明样本容量n乘样本方差与总体方差之比服从卡方分布x^2(n)
样本服从正态分布,证明样本容量n乘样本方差与总体方差之比服从卡方分布x^2(n) 正态分布的n阶中心矩参见: http://www.doc88.com/p-334742692198.html
- 实战:使用SVN+apache搭建一个版本控制服务器
今天讲的内容: 实战:使用SVN+apache搭建一个版本控制服务器 每天: 10:00 晚上:21:00 服务端:xuegod63.cn IP:192.168.10.63 服务概述: SVN(s ...
- Go 语言编程规范
1. gofmt 命令 大部分的格式问题可以通过 gofmt 来解决,gofmt 自动格式化代码,保证所有的 go 代码与官方推荐的格式保持一致,所有格式有关问题,都以gofmt的结果为准.所以,建议 ...
- spring JMS在接收消息的时候总是报错
spring JMS在接收消息的时候总是报错 org.springframework.jms.UncategorizedJmsException: Uncategorized exception oc ...
- POJ - 3436 ACM Computer Factory(最大流)
https://vjudge.net/problem/POJ-3436 题目描述: 正如你所知道的,ACM 竞赛中所有竞赛队伍使用的计算机必须是相同的,以保证参赛者在公平的环境下竞争.这就是所有这些 ...
- bzoj千题计划267:bzoj3129: [Sdoi2013]方程
http://www.lydsy.com/JudgeOnline/problem.php?id=3129 如果没有Ai的限制,就是隔板法,C(m-1,n-1) >=Ai 的限制:m减去Ai &l ...
- 【Python】使用Python将Shellcode转换成汇编
1.介绍 需要多少行代码转换hex成反汇编呢? 多亏了Python的Capstone库,做这件事只需要五行. 在二进制分析中,进行Exploit开发或逆向工程时,需要快速将十六进制的Shellcode ...