`

我们一起读文档,学习MyBatis(二)----------- Insert Update Delete操作的实现

阅读更多

在这里,我会直接写Insert Update Delete操作的简单实现,文档中从一个简单的demo到这些操作中间介绍了很多关于配置文件的详细信息,由于我水平有限,仅仅把这些具体的实现做到了,配置中还有很多东西不能够完全理解,为了不误导那些意外看到这个博客的人,便不多讲述。如果想要深入理解的话,可以看文档,或者再找一些其他好的资料。

 

还有,时间可能会比较紧张,所以,我在这里吧源码贴出来,具体步骤和以前的是一样,仅仅在我有体会或者有过问题的地方加下解释。源码我也会上传到下面,还有文档,建议大家自己读一下。

 

首先:BlogMpaper.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="mapper.BlogMapper">
	
	<!-- 查询单个Blog -->
	<select id="selectBlog" parameterType="int" resultType="model.Blog">
		select *
		from Blog where id = #{id}
	</select>
	
	<!-- 结果的匹配,文档中的解释为:resultMap – The most complicated and powerful element
	 that describes how to load your objects from the database result sets. -->
 	<resultMap type="model.Blog" id="blogMap">
		<id column="id" property="id" />
		<result column="title" property="title" />
		<result column="content" property="content" />
	</resultMap>

	<!-- 获取所有的数据 -->
	<select id="getBlog" resultType="Blog">
		select * from blog
	</select>

	<!-- 插入一条记录 -->
	<insert id="insert1" parameterType="model.Blog" useGeneratedKeys="true" keyProperty="id">
		insert into Blog (title, content) values (#{title}, #{content})
	</insert>

	<!-- 更新一条记录 -->
	<update id="updateBlog" parameterType="model.Blog">
		update Blog set title = #{title},	content = #{content}	where id = #{id}
	</update>

	<!-- 删除一条记录 -->
	<delete id="deleteBlog" parameterType="int">
		delete from blog where id = #{id}
	</delete>

</mapper>

 

BlogMapper.java

public interface BlogMapper {
	Blog selectBlog(int id);
	
	List<Blog> getBlog();
	
	int insert1(Blog blog);
	
	void deleteBlog(int id);
	
	void updateBlog(Blog blog);
}

   此处应该注意:虽然Mapper.xml配置文件中的参数都是单个的,但是由于parameterType="model.Blog",所以,这里在定义方法中的形参的时候,得定义为Blog类型的,如上,否则会出现Parameter 'title' not found类似的异常,具体的解释请参照:http://1358440610-qq-com.iteye.com/admin/blogs/1827391。

 

 

 Demo1.java

public class Demo1 {
	public static void main(String[] args) {
		String resource = "mybatis-config.xml";
		InputStream inputStream = null;
		try {
			inputStream = Resources.getResourceAsStream(resource);
		} catch (IOException e) {
			e.printStackTrace();
		}

		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(inputStream);
		SqlSession session = sqlSessionFactory.openSession();
		try {
			BlogMapper mapper = session.getMapper(BlogMapper.class);
			
			List<Blog> blogs = mapper.getBlog();
			for (Blog blog : blogs) {
				System.out.println(blog + "\n" + blog.getId() + "  "
						+ blog.getTitle() + "   " + blog.getContent());
				System.out.println();
			}
			
			Blog b = new Blog();
			b.setTitle("dd");
			b.setContent("content");
			int id = mapper.insert1(b);
			System.out.println(id);
			
			Blog blog = new Blog();
			blog.setId(1);
			mapper.updateBlog(blog);
			
			mapper.deleteBlog(1);
			
			session.commit();
		} finally {
			session.close();
		}
	}
}

 注意:在执行完方法后,必须有 session.commit();这句话进行事务提交。因为在做Insert  Update  Delete的时候,会先开启事务,而Mybatis不会自动提交(或许可以设置,我还不知道),所以,必须手动提交事务。

1
0
分享到:
评论

相关推荐

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    例如,DTD中定义了`select`、`insert`、`update`、`delete`等元素,它们分别对应SQL的四种基本操作。每个元素都可以包含`resultMap`(结果映射)、`parameterMap`(参数映射)等子元素,用来描述SQL查询返回的结果集...

    mybatis-plus快速入门项目-mybatis-plus基本操作大全-附带sql+项目文档

    MyBatis-Plus提供了自动化的CRUD操作,包括insert、insertBatch、selectOne、selectList、update、delete等方法,无需手动编写SQL。 6. **条件构造器(QueryWrapper)** QueryWrapper是MyBatis-Plus的核心组件之...

    mybatis-3-mapper.dtd文件下载

    在 Mybatis 的映射文件中,DTD 提供了关于如何构建映射语句的规范,比如 `&lt;select&gt;`, `&lt;insert&gt;`, `&lt;update&gt;`, 和 `&lt;delete&gt;` 等标签的使用。 例如,一个基本的 Mybatis 映射文件可能会包含如下的结构: ```xml &lt;!...

    Mybatis-Spring-1.2.2中文文档.zip

    接口方法名和XML中的select、insert、update、delete元素关联,Spring会自动处理这些接口的实现。 5. **Mapper扫描器** MapperScannerConfigurer组件用于扫描应用程序上下文中的Mapper接口,自动将它们注册到...

    MybatisX-1.4.17.zip

    在编写Mapper接口或XML配置文件时,插件会根据数据库元数据自动补全表名、字段名,甚至自动生成SELECT、INSERT、UPDATE、DELETE等基本SQL语句的模板。这样不仅减少了手动输入的工作量,还能减少因拼写错误导致的bug...

    mybatis-3-mapper.rar

    每个XML映射文件通常对应一个Mapper接口,其中包含`select`, `insert`, `update`, `delete`等元素,这些元素定义了对应的SQL操作。例如: ```xml SELECT * FROM user WHERE id = #{id} ``` 在这个例子中,`...

    MyBatis sql-select-insert-update-delete

    误点Uninject language or reference导致xml错误警告都不显示(恢复)

    mybatis-3-config+mybatis-3-mapper.dtd

    2. **select**、**insert**、**update**、**delete**:这些元素分别对应 SQL 的查询、插入、更新和删除操作,其中可以包含动态 SQL。 3. **resultMap**:定义了如何将数据库查询结果映射到 Java 对象,包括一对一、...

    mybatis-3-mapper.dtd,mybatis-3-config.dtd

    比如,`select`、`insert`、`update`、`delete`元素分别对应SQL查询操作,`resultMap`定义了如何将数据库结果映射到Java对象。`parameterMap`则用于处理输入参数。理解这些元素的用法,可以帮助我们编写出高效、灵活...

    mybatis-3.5.9 源码(mybatis-3-mybatis-3.5.9.zip)

    - SqlSession 提供了执行 SQL 语句和管理事务的方法,例如:selectOne、insert、update 和 delete。 2. **Mapper 接口与 XML 映射文件** - MyBatis 允许开发者定义自己的 Mapper 接口,每个方法对应一个 SQL 语句...

Global site tag (gtag.js) - Google Analytics