`
z2009zxiaolong
  • 浏览: 77188 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

使用mybatis实现CRUD

    博客分类:
  • Java
阅读更多

本文介绍的是mybatis3的使用,针对使用mybatis3作为持久层框架的入门学习。下面具体讲解:

  1. mybatis需要程序员手动建表,用于测试的建表语句如下:
    --oracle10g
    CREATE TABLE user_tbl (
      id int PRIMARY KEY ,
      name varchar2(20),
      age int,
      sex varchar2(5),
      password varchar2(20)
    )
    
    create sequence user_seq;
    INSERT INTO user_tbl VALUES (1, 'zs',18, '张三', 'zs');
    
     
  2. 连接数据库的工具类:
    package util;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    /**
     * 连接数据库的工具类
     * @author Jzl
     *
     */
    public class MybatisUtil {
    	private static SqlSessionFactory sessionFactory;
    	private SqlSession session;
    
    	static {
    		String resource = "mybatis3-config.xml";
    		InputStream inputStream = null;
    		try {
    			inputStream = Resources.getResourceAsStream(resource);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    	}
    
    	public static SqlSessionFactory getSqlsessionfactory() {
    		return sessionFactory;
    	}
    
    	public static SqlSession getSession() {
    		return sessionFactory.openSession(false);
    	}
    
    	public void closeSession(SqlSession session) {
    		if (session != null) {
    			session.close();
    			session = null;
    		}
    	}
    }
    
    
     
  3. UserDao,用于实现对User表的CRUD操作:
    package dao;
    
    import java.util.List;
    
    import entity.User;
    
    public interface UserDao {
    	public List<User> getUserByName(String name);
    	
    	public List<User> getAllUser();
    
    	public User getUser(String name);
    	
    	public void insertUser(User user);
    	
    	public void updateUser(User user);
    	
    	public void deleteUser(int id);
    }
    
    
     
  4. 不同于hibernate,mybatis映射文件(这里是UserDao.xml)映射的是Dao层的方法,用于将Dao层的方法与具体的sql语句绑定。
    <?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="dao.UserDao">
    	<select id="getAllUser" resultType="entity.User">
    		select * from user_tbl
    	</select>
    
    	<select id="getUserByName" parameterType="String" resultType="entity.User">
    		select * from user_tbl
    		where name like #{name}
    	</select>
    
    	<select id="getUser" parameterType="String" resultType="entity.User">
    		select * from user_tbl where
    		name=#{name}
    	</select>
    
    	<insert id="insertUser" parameterType="entity.User">
    		<selectKey resultType="int" order="BEFORE" keyProperty="id">
    			select user_seq.nextval from dual
    		</selectKey>
    		insert into user_tbl (id,name,age,sex,password)
    		values
    		(#{id},#{name},#{age},#{sex},#{password})
    	</insert>
    
    	<update id="updateUser" parameterType="entity.User">
    		update user_tbl set name = #{name},age =
    		#{age},
    		sex = #{sex},password = #{password} where id = #{id}
    	</update>
    
    	<delete id="deleteUser" parameterType="int">
    		delete from user_tbl where id = #{id}
    	</delete>
    </mapper>
    
     
  5. 实体类User如下:
    package entity;
    
    public class User {
    	private int id;
    	private String name;
    	private int age;
    	private String sex;
    	private String password;
    
    	public User() {
    		System.out.println("--调用无参数构造方法--");
    	}
    	
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public String getSex() {
    		return sex;
    	}
    
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    
    	public String getPassword() {
    		return password;
    	}
    
    	public void setPassword(String password) {
    		this.password = password;
    	}
    }
    
    
     
  6. 最后就可以测试了,测试类TestUser如下:
    package test;
    
    import java.util.List;
    
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    
    import util.MybatisUtil;
    import dao.UserDao;
    import entity.User;
    
    public class TestUser {
    
    	public void testGetByName() {
    		SqlSession session = MybatisUtil.getSession();
    		List<User> users = session.selectList("getUserByName", "%s%");
    		for (User user : users) {
    			System.out.println(user.getId() + "==" + user.getName());
    		}
    		session.commit();
    		session.close();
    	}
    
    	public void testGetAll() {
    		SqlSession session = MybatisUtil.getSession();
    		List<User> users = session.selectList("getAllUser");
    		for (User user : users) {
    			System.out.println(user.getId() + "==" + user.getName());
    		}
    		session.commit();
    		session.close();
    	}
    
    	public void testGet() {
    		SqlSession session = MybatisUtil.getSession();
    		UserDao userDao = session.getMapper(UserDao.class);
    		User user = userDao.getUser("zs");
    		System.out.println(user.getId() + "==" + user.getName());
    		session.commit();
    		session.close();
    	}
    
    	@Test
    	public void testAdd() {
    		SqlSession session = MybatisUtil.getSession();
    		UserDao userDao = session.getMapper(UserDao.class);
    		User user = new User();
    		// user.setId(10);
    		user.setName("zs");
    		user.setPassword("zs");
    		user.setAge(20);
    		user.setSex("女");
    		try {
    			userDao.insertUser(user);
    			System.out.println("id:" + user.getId());
    			// session.commit();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		// session.close();
    	}
    
    	public void testUpdate() {
    		SqlSession session = MybatisUtil.getSession();
    		UserDao userDao = session.getMapper(UserDao.class);
    		User user = userDao.getUser("sb");
    		user.setName("sa");
    		user.setAge(19);
    		userDao.updateUser(user);
    		session.commit();
    		session.close();
    	}
    
    	public void testDelete() {
    		SqlSession session = MybatisUtil.getSession();
    		UserDao userDao = session.getMapper(UserDao.class);
    		userDao.deleteUser(1001);
    		session.commit();
    		session.close();
    	}
    }
    
    
     
  7. 附上测试项目的源代码。
1
1
分享到:
评论

相关推荐

    05实现mybatis简单crud功能demo

    05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能demo05实现mybatis简单crud功能...

    LayUI+Mybatis实现CRUD效果.rar

    利用LayUI+MyBatis实现CRUD操作MySQL数据库 https://blog.csdn.net/qq_29001539/article/details/105613480 雁去雁归雁不散2020-04-19 14:49:17 LayUI+MyBatis实现CRUD操作 项目描述 前端页面采用Layui进行搭建,...

    【自虐1.2】Srping+MyBatis完成CRUD

    以上就是使用Spring+MyBatis实现CRUD的基本流程。在实际开发中,还需要考虑事务管理、异常处理、性能优化等方面的问题。同时,随着Spring Boot和MyBatis Plus等更高级框架的出现,我们可以更快速、更简洁地搭建CRUD...

    ibatis mybatis 分页 crud 完整代码

    本资源"ibatis mybatis 分页 crud 完整代码"包含了这两个框架在CRUD(创建、读取、更新、删除)操作以及分页功能上的实现,下面将详细介绍相关知识点。 1. **Ibatis**: Ibatis 是一款轻量级的Java ORM(对象关系...

    mybatis入门示例代码分享

    通过本项目示例为大家介绍两种Mybatis实现CRUD的操作 * 使用映射配置文件实现CRUD操作 * 使用注解实现CRUD操作(简单介绍) 通过本项目示例为大家介绍两种Mybatis实现CRUD的操作 * 使用映射配置文件实现CRUD操作 * ...

    MyBatis 1章 入门(使用MyBatis完成CRUD)

    **MyBatis入门教程——使用MyBatis完成CRUD操作** MyBatis是一个优秀的Java持久层框架,它简化了数据库操作,将SQL语句与Java代码分离,使得开发者能够更专注于业务逻辑。本教程将带你逐步了解如何使用MyBatis进行...

    二、mybatis的CRUD-基于接口的方式

    本文将深入探讨如何使用MyBatis实现CRUD(创建、读取、更新、删除)操作,特别是基于接口的方式。这种方式使得代码更加简洁,易于维护。 首先,让我们了解MyBatis的基本概念。MyBatis是一个SQL映射框架,它允许...

    mybatis基础CRUD

    本教程将围绕"Mybatis基础CRUD"这一主题,深入探讨MyBatis如何实现增删改查的基本操作。 首先,我们需要了解MyBatis的基本架构。MyBatis的核心组件包括SqlSessionFactory、SqlSession和Mapper接口。...

    MyBatis 采用注解方式实现CRUD

    下面我们将详细介绍如何使用注解实现MyBatis的CRUD。 1. **注解简介** MyBatis 的注解主要包括 `@Select`、`@Insert`、`@Update` 和 `@Delete`,它们分别用于定义查询、插入、更新和删除操作的SQL语句。此外,还有...

    ibatis mybatis crud 完整代码

    本篇文章将深入探讨这两个框架,并基于`CRUD`(Create, Read, Update, Delete)操作来阐述如何使用它们进行数据库交互。同时,我们也会涉及通用分页这一实用功能。 `iBatis` 是一款由 Apache Software Foundation ...

    SpringBoot整合Mybatis实现CRUD

    在本文中,我们将详细介绍如何使用SpringBoot整合Mybatis实现CRUD(Create,Read,Update,Delete)操作。 为什么选择SpringBoot和Mybatis SpringBoot是基于Spring框架的微服务框架,能够快速开发Restful风格的Web...

    MyBatis基本CRUD与动态SQL(带log4j.properties).zip

    综上所述,MyBatis基本CRUD操作涉及了数据库中的基本操作,而动态SQL则展示了MyBatis如何通过XML映射文件实现灵活的SQL构建。配合`log4j.properties`配置,开发者可以更好地理解和优化MyBatis应用的执行流程。通过...

    05MyBatis的CRUD操作.md

    05MyBatis的CRUD操作.md

    MyBatis-CRUD

    7. **动态SQL**:MyBatis的动态SQL功能非常强大,可以在XML映射文件中使用if、choose(when/otherwise)、where、set、foreach等标签编写条件语句,实现更灵活的查询需求。 8. **缓存机制**:MyBatis提供了本地缓存...

    Springboot_mybatis_CRUD.zip

    综上所述,"Springboot_mybatis_CRUD.zip"项目展示了如何使用SpringBoot和MyBatis进行数据库操作的典型应用,提供了从创建到运行的完整流程。通过学习和实践这个项目,开发者可以更深入地理解这两个框架的结合使用...

    mybatis_crud增删改查数据库操作.zip

    在本示例中,"mybatis_crud增删改查数据库操作.zip" 提供了一个使用MyBatis进行CRUD(Create、Read、Update、Delete)操作的教程。通过解压这个压缩包,我们可以看到一个名为"mybatis_day03_crud"的目录,这通常包含...

    2024最新MyBatis CRUD操作,动态SQL HM

    通过上述步骤,我们可以清楚地看到如何使用 MyBatis 实现 CRUD 操作以及如何利用其提供的动态 SQL 功能来构建更加灵活和强大的 SQL 语句。在实际开发过程中,合理利用 MyBatis 提供的各种元素和功能,可以使我们的 ...

    SpringBoot+MybatisCRUD 整合案例

    这个"SpringBoot+MybatisCRUD 整合案例"是为初学者设计的,旨在帮助他们快速掌握这两个流行的框架的结合使用。 首先,我们需要在项目中引入Spring Boot和MyBatis的依赖。在`pom.xml`文件中,我们需要添加以下Maven...

    mybatis_crud.zip

    参照BIlibili学习视屏(https://www.bilibili.com/video/av47952553?from=search&seid=15411787773039479759),自己手动编写的crud部分代码,github仓库(https://github.com/MeiyuJijieYihou/mybatis_crud.git)。

Global site tag (gtag.js) - Google Analytics