mybatis ---- 实现数据的增删改查
前面介绍了接口方式的编程,需要注意的是:在book.xml文件中,<mapper namespace="com.mybatis.dao.IBookDao"> ,命名空间namespace,必须要与我们定义的package和接口一致,否则就会出错。这一章主要基于接口的编程完成如下事情.
用mybatis查询数据
resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的. 注意:resultMap 不仅仅可以查询列表,也可以查询单个数据对象. 它也是解决列名不匹配的一种方式.
package com.mybatis.dao; import java.util.List;
import com.mybatis.model.Book; public interface IBookDao {
//这里的selectBookById必须和book.xml 配置的select id 对应
public Book selectBookById(int id); //查询列表
public List<Book> selectAll(); }
<?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"> <!--这块等于Dao接口的实现 namespace必须和接口的类路径一样-->
<mapper namespace="com.mybatis.dao.IBookDao"> <resultMap type="Book" id="resultListBook">
<id property="id" column="id"/>
<result property="imageUrl" column="image_url"/>
<result property="name" column="book_name"/>
<result property="author" column="author"/>
<result property="description" column="description"/>
</resultMap> <!-- queryEmpById必须和接口中的方法名一样, 返回一个Emp 就是刚才的别名 ,如果不用别名要连路径一起写,麻烦-->
<!-- 这里我省略了参数类型,parameterType,主要是为了配合我数据库里的数据(只有两条嘛) -->
<select id="selectAll" resultMap="resultListBook">
select id, image_url,book_name, author,description from books
</select>
</mapper>
Test.java
package com.mybatis.test; import java.io.IOException;
import java.util.List; 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 com.mybatis.dao.IBookDao;
import com.mybatis.model.Book; public class Test { /***
* 获得MyBatis SqlSessionFactory
* SqlSessionFactory 负责创建SqlSession ,一旦创建成功,就可以用SqlSession实例来执行映射语句
* ,commit,rollback,close等方法
* @return
*/
private static SqlSessionFactory getSessionFactory(){
SqlSessionFactory sessionFactory=null;
String resource="configuration.xml";
try {
sessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));
} catch (IOException e) {
e.printStackTrace();
}
return sessionFactory;
} /**
* main 方法
* @param args
*/
public static void main(String[] args) {
SqlSession session=getSessionFactory().openSession();
//获得IBookDao 接口实例
IBookDao bookDao=(IBookDao) session.getMapper(IBookDao.class);
List<Book> listBook=bookDao.selectAll();
for(Book book :listBook){
System.out.println("id="+book.getId()+"\tiamge_url="+book.getImageUrl()+"\tauthor="+book.getAuthor());
}
}
}
运行Test.java如下:
id=1 iamge_url=resources/images/english.jpg author=孙悟空
id=2 iamge_url=resources/images/english.jpg author=刘诗诗
mybatis实现数据的增加
<insert id="insertBook" parameterType="Book" useGeneratedKeys="true" keyProperty="id">
insert into books(image_url,book_name,author,description)
values(#{imageUrl},#{name},#{author},#{description})
</insert>
<insert id="insertBook2" parameterType="Book">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
<!--emppkempno是一个 oracle的序列-->
select emppkempno.nextval from dual;
</selectKey>
<insert id="insertBook" parameterType="Book" useGeneratedKeys="true" keyProperty="id">
insert into books(id,image_url,book_name,author,description)
values(#{id},#{imageUrl},#{name},#{author},#{description})
</insert>
在上面的示例中,selectKey元素将会首先运行,Book的id会被设置,然后插入语句会被调用。
<?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"> <!--这块等于Dao接口的实现 namespace必须和接口的类路径一样-->
<mapper namespace="com.mybatis.dao.IBookDao"> <resultMap type="Book" id="resultListBook">
<id property="id" column="id"/>
<result property="imageUrl" column="image_url"/>
<result property="name" column="book_name"/>
<result property="author" column="author"/>
<result property="description" column="description"/>
</resultMap> <!-- queryEmpById必须和接口中的方法名一样, 返回一个Emp 就是刚才的别名 ,如果不用别名要连路径一起写,麻烦-->
<!-- 这里我省略了参数类型,parameterType,主要是为了配合我数据库里的数据(只有两条嘛) -->
<select id="selectAll" resultMap="resultListBook">
select id, image_url,book_name, author,description from books
</select> <insert id="insertBook" parameterType="Book" useGeneratedKeys="true" keyProperty="id" >
insert into books(image_url,book_name,author,description)
values(#{imageUrl},#{name},#{author},#{description})
</insert>
</mapper>
IBookDao.java
package com.mybatis.dao; import java.util.List;
import com.mybatis.model.Book; public interface IBookDao {
//这里的selectBookById必须和book.xml 配置的select id 对应
public Book selectBookById(int id); //查询列表
public List<Book> selectAll(); //插入数据对象Book
public void insertBook(Book book);
}
Test.java ,如果不session.commit().,数据不会进入到数据库中.
package com.mybatis.test; import java.io.IOException;
import java.util.List; 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 com.mybatis.dao.IBookDao;
import com.mybatis.model.Book; public class Test { /***
* 获得MyBatis SqlSessionFactory
* SqlSessionFactory 负责创建SqlSession ,一旦创建成功,就可以用SqlSession实例来执行映射语句
* ,commit,rollback,close等方法
* @return
*/
private static SqlSessionFactory getSessionFactory(){
SqlSessionFactory sessionFactory=null;
String resource="configuration.xml";
try {
sessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));
} catch (IOException e) {
e.printStackTrace();
}
return sessionFactory;
} /**
* main 方法
* @param args
*/
public static void main(String[] args) { Book book=new Book();
book.setAuthor("安徒生");
book.setName("卖火柴的小女孩");
book.setDescription("好好学习,天天向上吧");
book.setImageUrl("resources/images/gg.jpg"); SqlSession session=getSessionFactory().openSession();
//获得IBookDao 接口实例
try {
IBookDao bookDao=(IBookDao) session.getMapper(IBookDao.class);
//测试增加
bookDao.insertBook(book);
session.commit();
System.out.println(book.getId());
} catch (Exception e) {
e.printStackTrace();
} finally{
session.close();
}
}
}
至于Update 和Delete ,与Insert 、update基本相同.,这里就不啰嗦了.
mybatis ---- 实现数据的增删改查的更多相关文章
- Mybatis实现数据的增删改查
Mybatis实现数据的增删改查 1.项目结构(使用maven创建项目) 2.App.java package com.GetcharZp.MyBatisStudy; import java.io.I ...
- Mybatis实现数据的增删改查(CRUD)
什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索.MyBat ...
- 转!!!Mybatis实现数据的增删改查(CRUD)
什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索.MyBat ...
- Mybatis框架基于注解的方式,实对数据现增删改查
编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...
- Mybatis学习总结(二)—使用接口实现数据的增删改查
在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num ...
- MyBatis学习系列二——增删改查
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
- dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)
jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...
- MVC模式:实现数据库中数据的增删改查功能
*.数据库连接池c3p0,连接mysql数据库: *.Jquery使用,删除时跳出框,确定是否要删除: *.使用EL和JSTL,简化在jsp页面中插入的java语言 1.连接数据库 (1)导入连接数据 ...
- Hibernate3回顾-5-简单介绍Hibernate session对数据的增删改查
5. Hibernate对数据的增删改查 5.1Hibernate加载数据 两种:get().load() 一. Session.get(Class arg0, Serializable arg1)方 ...
随机推荐
- EBS库存(INV)模块常用表
select * from org_organization_definitions库存组织 select * from mtl_parameters组织参数 select * from mtl ...
- 02_IO操作的基本规律(InputStream,OutputStream,Reader,Writer,FileReader,FileWriter,BufferedReader,BufferedWri
模拟BufferedInputStream,编写一个类 package toto.IO; import java.io.IOException; import java.io.InputStre ...
- 6.4、Android Studio的GPU Monitor
Android Monitor包含GPU Monitor,它将可视化的显示渲染窗体的时间.GPU Monitor可以帮助你: 1. 迅速查看UI窗体生成 2. 辨别是否渲染管道超出使用线程时间 在GP ...
- 【Unity Shaders】Unity里的雾效模拟
写在前面 熟悉Unity的都知道,Unity可以进行基本的雾效模拟.所谓雾效,就是在远离我们视角的方向上,物体看起来像被蒙上了某种颜色(通常是灰色).这种技术的实现实际上非常简单,就是根据物体距离摄像 ...
- linux service 简单易懂贴
service用于管理Linux操作系统中服务的命令 1.不是在所有linux发行版本中都有.主要是在redhat.fedora.mandriva和centos中. 2. 命令位于/sbin目录下,用 ...
- Mybatis简单入门
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用 ...
- MTK机器原始OTA更新方法
在源码中编译完成后会生成各类.img的文件,这时候make otapackage生成ota包 一般ota包在源码工程的out/target/...目录下 一.通过线刷模式 将生成OTA包拷贝到Wind ...
- 第七天:创建WBS
- Android进阶(二十六)MenuInflater实现菜单添加
MenuInflater实现菜单添加 前言 之前实现的Android项目中可以实现菜单的显示.但是再次调试项目时发现此功能已无法实现,很是令人费解.难道是因为自己手机Android系统的问题?尝试通过 ...
- 使用Mediaplay类写一个播放器
我们知道android本身播放视频的的能力是有限的..先来一个Demo 另附我的一个还未成熟的播放器,下载地址:http://www.eoemarket.com/soft/370334.html,正在 ...