小李的MyBatis学习笔记(一)

简介:

  1. MyBatis原本是apache的一个开源项目iBatis,2010年该项目由apache software foundation迁移到了Google code,并且改名为MyBatis,201311月迁移到GitHub。
  2. MyBatis是一款持久化框架,它支持自定义SQL查询、存储过程以及高级映射,与传统的 JDBC 开发相比, MyBatis 消除了几乎所有的代码和参数的手工设置。
  3. Mybatis是一个ORM框架,和Hibernate一样,相比Hibernate更容易上手。
  4. MyBatis可以使用 XML 或注解方式进行配置和映射,它是把实体类SQL语句之间建立了映射关系,而Hibernate是在实体类和数据库表之间建立了映射关系。
  5. GitHub源码MyBatis中文学习手册

第一个Mybatis工程搭建流程:

  1. 导入mybatis和mysql连接的jar包,创建mybatis.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>
	<settings>
		<setting name="logImpl" value="STDOUT_LOGGING" />
	</settings>
	<environments default="dev">
		<environment id="dev">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://192.168.0.0:3306/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com/mapper/NewsMapper.xml" />
	</mappers>
</configuration>

第一步主要就是建立数据库的连接,environments标签中可以配置多种开发环境,根据环境的不同可以选择不同的连接,上面只配置了一个开发环境,所以默认就是它。

 2.创建实体类和映射器接口

package com.entity;

import java.util.Date;

public class News {
	
	private int id;
	private String title;
	private String content;
	private String source;
	private String date;
	
	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;
	}
	public String getSource() {
		return source;
	}
	public void setSource(String source) {
		this.source = source;
	}
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}

}
package com.mapper;

import java.util.List;

import com.entity.News;

public interface NewsMapper {
	
	public List<News> selectAll();
	
	public void insertNews(News news);
	
	public List<News> selectIncludeSource(String str);
	
	public void updatetNews(String source,int id);
	
	public void deleteNews(int 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">
<mapper namespace="com.mapper.NewsMapper">
	<select id="selectAll" resultType="com.entity.News">
		select * from newsdata
	</select>
	<insert id="insertNews" parameterType="com.entity.News">
		insert into newsdata
		(title,content,source,date) values
		(#{title},#{content},#{source},#{date})
	</insert>
	<select id="selectIncludeSource" resultType="com.entity.News">
		select * from
		newsdata where content like #{str}
	</select>
	<update id="updateNews" parameterType="com.entity.News">
		update newsdata set source=#{source} where id=#{id}
	</update>
	<delete id="deleteNews" parameterType="com.entity.News">
		delete from newsdata where id=#{id}
	</delete>

</mapper>

因为MyBatis是一个ORM框架,所以我们在建立数据库表的时候尽量字段名和实体类的变量名保持一致。映射文件的根元素为mapper,它的namespace属性为映射器接口完全限定名(即映射器接口的完整路径名),Mapper文件下   子元素的id属性为接口中某个方法名称,返回值类型默认是实体类型,会封装好对应好每一个字段。

3.关联配置文件,创建实体类获取SqlSession对象

package com.uitl;

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;


public class MyBatisUtil {
	
	private static SqlSessionFactory sessionFactory;
	static {
		InputStream is;
		try {
			is = Resources.getResourceAsStream("mybatis.xml");
			sessionFactory = new SqlSessionFactoryBuilder().build(is);
			is.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static SqlSession getSession() {
		return sessionFactory.openSession();
	}

}

SQLSession对象在Mybatis中也是默认单实例模式,所以直接在静态代码块中创建,一次创建一直使用同一个对象。

4.测试类 

package com.ui;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.entity.News;
import com.uitl.MyBatisUtil;

public class Test {

	public static void main(String[] args) {
		
		SqlSession session = MyBatisUtil.getSession();
		
		
//		List<News> users = session.selectList("com.mapper.NewsMapper.selectAll");
//		for (News user : users) {
//			System.out.println(user);
//		}
		
		
//		News news=new News();
//		news.setTitle("��ѧ����ѧ");
//		news.setContent("��ѧ����ѧңң����");
//		news.setSource("������");
//		String date=new Date().toLocaleString();
//		news.setDate(date);
//		int tag=session.insert("com.mapper.NewsMapper.insertNews", news);
//		if(tag!=0) {
//			System.out.println("����ɹ�������");
//		}else {
//			System.out.println("����ʧ�ܣ�����");
//		}
		
		
//		String string="��ѧ��";
//		List<News> users = session.selectList("com.mapper.NewsMapper.selectIncludeSource","%��ѧ��%");
//		for (News user : users) {
//			System.out.println(user);
//		}
		
		
//		News news=new News();
//		news.setId(4);
//		news.setSource("������");
//		int tag=session.insert("com.mapper.NewsMapper.updateNews",news);
//		if(tag!=0) {
//			System.out.println("���³ɹ�������");
//		}else {
//			System.out.println("����ʧ�ܣ�����");
//		}
		
		
//		int tag=session.delete("com.mapper.NewsMapper.deleteNews",4);
//		if(tag!=0) {
//			System.out.println("ɾ���ɹ�������");
//		}else {
//			System.out.println("ɾ��ʧ�ܣ�����");
//		}
		
		
		session.commit();
		session.close();
	}

}

哈哈哈,原谅我的编码在我研究eclipse时候设置乱了我也懒得调了。


 

 

Mybatis学习笔记持续更新中~~~~~~~~~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值