mybatis---demo1--(单表增删改查)----bai

实体类:

package com.etc.entity;

public class News
{
	private int id;
	private String title;
	private String content;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	@Override
	public String toString() {
		return "News [content=" + content + ", id=" + id + ", title=" + title
				+ "]";
	}
}
========================================================================
dao类:

package com.etc.dao;

import java.util.List;

import com.etc.entity.News;

public interface NewsDao
{
	List<News> findAll();
	News findById(int id);//精确查询
	void add(News news);//添加
	void update(News news);//修改
	void delete(Integer id);//删除
}
==========================================================================
工具类:

package com.etc.utils;

import java.io.InputStream;
import java.sql.Connection;

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.apache.log4j.lf5.util.Resource;

//实现获取、释放mybatis数据库连接的工具类
public class MyBatisSessionFactory {
	//定义常量
	private static String CONFIG_FILE_LOCATION="mybatis-config.xml";

	//考虑到该工具类允许被多线程执行。因为封装1个线程池,让每个线程从线程池中获取1个连接。让1个线程对应
	//1条数据库连接,这样更安全
	//ThreadLocal的作用:让"线程"绑定"资源",这样就不会出现多个线程同享资源的情况。更安全。牺牲内存,换取”安全“
	private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();

	private static InputStream is; //用于读取配置文件的流对象

	private static SqlSessionFactory fac;//用于管理多个连接的工厂。一个工厂对应1个数据库。

	//在该类的静态段中加载配置文件,这样可以确保只执行1次。
	static
	{
		try {
			is = Resources.getResourceAsStream(CONFIG_FILE_LOCATION);//读取配置文件
			fac = new SqlSessionFactoryBuilder().build(is);//通过配置文件创建1个连接工厂
		} catch (Exception e)
		{
			e.printStackTrace();
		}

	}
	//获取1条连接
	public static SqlSession getSession()
	{
		SqlSession s  = threadLocal.get(); //找线程池要1条连接
		if(s==null) //第1次时,拿不到,则由工厂获取1条连接并放入线程池
		{
			s = fac.openSession();//由工厂获取1条连接并放入线程池
			threadLocal.set(s);//放入线程池
		}
		return s;
	}

	//关闭连接
	public static void closeSession()
	{
		SqlSession s  = threadLocal.get();//找线程池要本线程对应的连接
		threadLocal.set(null);//将该连接从线程池中清除
		if(s!=null)
			s.close();//物理关闭连接
	}
}
=======================================================================
mybatis-config.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>
<typeAliases>
	<typeAlias type="com.etc.entity.News" alias="News"/>
</typeAliases>
<environments default="development">
<environment id="development">
   <transactionManager type="JDBC"/>
   <dataSource type="POOLED">
  	<property name="url" value="jdbc:mysql://127.0.0.1/java?characterEncoding=utf-8"/>
  	<property name="username" value="root"/>
  	<property name="password" value="root"/>
  	<property name="driver" value="com.mysql.jdbc.Driver"/>
  </dataSource>
</environment>
</environments>
<mappers>
  <mapper resource="com/etc/mapper/News-mapper.xml"/>
</mappers>
</configuration>
========================================================================
News-mapper.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">
<!-- 既是实体的映射文件。类似orm。同时又是dao的实现代码 -->
<mapper namespace="com.etc.dao.NewsDao">
<!-- 配置实体和数据表的映射关系 -->
<resultMap type="News" id="NewsResult">
	<id column="id" property="id"/>  <!-- 主键 -->
	<result column="title" property="title"/>
	<result column="content" property="content"/>
</resultMap>
 <!-- 查询全部,实现findAdd方法 -->
<select id="findAll" resultMap="NewsResult">
	select * from news
</select>
<!-- 精确查询 ,实现findbyid的方法-->
<select id="findById" parameterType="java.lang.Integer" resultType="News">
	select * from news where id=#{id}
</select>
<!-- 添加 -->
<insert id="add" parameterType="News" >
	insert into news (title,content) values(#{title},#{content})
</insert>
<!-- 修改-->
<update id="update" parameterType="News" >
	update news set title=#{title},content=#{content} where id=#{id}
</update>
<!-- 删除 -->
<delete id="delete" parameterType="java.lang.Integer">
	delete from news where id=#{id}
</delete>
</mapper>
==========================================================================
测试类:

package com.etc.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.etc.dao.NewsDao;
import com.etc.entity.News;
import com.etc.utils.MyBatisSessionFactory;
public class TestNewsDao {
	@Test
	public void testFindAll()
	{
		// 1 获取连接
		SqlSession session = MyBatisSessionFactory.getSession();
		//2 执行查询
		List<News> list = session.getMapper(NewsDao.class).findAll();
		for(News n:list)
			System.out.println(n);
		//3 关闭
		MyBatisSessionFactory.closeSession();
	}
	//@Test
	public  void testFindById()
	{
		// 1 获取连接
		SqlSession session = MyBatisSessionFactory.getSession();
		//2 执行查询
		News n = session.getMapper(NewsDao.class).findById(2);
		System.out.println(n);
		//3 关闭
		MyBatisSessionFactory.closeSession();
	}
	//@Test
	public void testadd()
	{
		// 1 获取连接
		SqlSession session = MyBatisSessionFactory.getSession();

		//2 执行添加
		News n = new News();
		n.setTitle("新的主题");
		n.setContent("新的内容");
		try {
			session.getMapper(NewsDao.class).add(n);
			session.commit();
			System.out.println("添加成功");
		} catch (Exception e)
		{
			System.out.println("添加失败:");
			e.printStackTrace();
			session.rollback();
		}
		//3 关闭
		MyBatisSessionFactory.closeSession();
	}
	//@Test
	public void testupdate()
	{
		// 1 获取连接
		SqlSession session = MyBatisSessionFactory.getSession();

		//2 执行添加
		News n = new News();
		n.setId(4);
		n.setTitle("全新的主题");
		n.setContent("全新的内容");
		try {
			session.getMapper(NewsDao.class).update(n);
			session.commit();
			System.out.println("修改成功");
		} catch (Exception e)
		{
			System.out.println("修改失败:");
			e.printStackTrace();
			session.rollback();
		}
		//3 关闭
		MyBatisSessionFactory.closeSession();

	}
	//@Test
	public void testdelete()
	{
		// 1 获取连接
		SqlSession session = MyBatisSessionFactory.getSession();
		//2 执行添加
		try {
			session.getMapper(NewsDao.class).delete(4);
			session.commit();
			System.out.println("删除成功");
		} catch (Exception e)
		{
			System.out.println("删除失败:");
			e.printStackTrace();
			session.rollback();
		}
		//3 关闭
		MyBatisSessionFactory.closeSession();
	}
}
=========================================================================

  

时间: 2024-11-05 11:35:03

mybatis---demo1--(单表增删改查)----bai的相关文章

Mybatis实现单表增删改查操作

mybatis是对持久层进行了封装.mybatis文档地址:https://mybatis.org/mybatis-3/zh/index.html 下面实现单表的增删改查操作. 1.新建maven项目命名为mybatis.并在pom.xml中引入相关依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

mybatis(单表增删改查)

(mybatis注意各个文件的映射问题) 用到的t_user数据库脚本: -- 导出 mybatis 的数据库结构 CREATE DATABASE IF NOT EXISTS `mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `mybatis`; -- 导出 表 mybatis.t_user 结构 CREATE TABLE IF NOT EXISTS `t_user` ( `id` int(10) NOT NULL AUTO_INCREM

mybatis(单表增删改查useMapper版)

数据库脚本(注意测试时先add-->load-->update-->delete-->list)UserMapper版 -- -------------------------------------------------------- -- 主机: 127.0.0.1 -- 服务器版本: 5.5.36-MariaDB - mariadb.org binary distribution -- 服务器操作系统: Win32 -- HeidiSQL 版本: 8.0.0.4396 --

使用CI操作oracle 10g的单表增删改查

<?php if (!defined('BASEPATH'))    exit('No direct script access allowed'); class UseOra extends CI_Controller{ public function index()    {        echo '欢迎使用测试CI使用Oracle 10g 的功能,您可以在地址栏中使用如下的函数参数:<br>';        echo '=============================

再说“使用CI操作oracle 10g的单表增删改查”

--Control中的UseOra.php <?php if (!defined('BASEPATH'))    exit('No direct script access allowed'); class UseOra extends CI_Controller{ public function index()    {        echo '欢迎使用测试CI使用Oracle 10g 的功能,您可以在地址栏中使用如下的函数参数:<br>';        echo '=======

MyBatis单表增删改查--XML实现

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到 sessionfactory. 2.

快速开发:单表增删改查

EOS快速开发提供了一键生成代码向导,通过功能向导可生成JSP页面.以及业务逻辑代码. 下面就以单表的简单操作为例,介绍EOS快速开发. 在Web页面上展现数据库中的一张表,实现了对单表的数据库查询.增加与删除功能操作,并且实现了分页查询,效果如下图所示. 一.效果图 1. 查询与结果效果图 2. 录入与修改表单效果图 二.创建数据模型 1. 右键点击"资源管理器"视图中,用户创建的构件包下的"数据/数据模型"节点,选择[创建/数据集]菜单,如下图所示,创建一个名为

Mybatis实现部门表增删改查以及排序

废话不说,直接开门见山! 需要在WebContent下的lib下导入两个包 mybatis-3.2.5.jar ojdbc6.jar 1 package com.xdl.entity; 2 3 import java.io.Serializable; 4 5 public class Dept implements Serializable{ 6 private Integer deptno;//类型和名称与表保持一致 7 private String dname; 8 private Stri

django orm 单表增删改查

一 简单增删改查 1.增 User.objects.create(name='Alan', age=10, birthday='2018-08-08') user = User(name='Alan', age=10, birthday='2018-08-08') user.save() 2.查询 # 操作的结果拥有是一个list users = User.objects.filter(name='Owen') # 只能操作有且只有一条数据记录 user = User.object.set(id

MySQL初步理解,简易单表增删改查

什么是数据库? 存储数据的仓库,本质是一个文件系统,封装了算法和文件之前数据的存储模式 阶段1:集合 数组 变量 缺点:数据存储在内存中,不能实现数据的持久化存储 阶段2:IO流 结合文件 .txt .xml.... 优点:数据存储在磁盘上,数据可以实现持久化存储 缺点:数据操作时,算法必须自己实现,但是相当一部分算法实现重复 阶段3:数据库 优点:使用专门的程序封装了算法部分 数据库与IO比较:算法 + 文件存储数据数据库结构: 算法部分:.exe程序 lib文件夹下 文件存储部分:以文件和文