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