1.什么是MyBatis?
MyBatis 是一个可以自定bai义SQL、存储过程和高级映射的持久du层框架。MyBatis 摒除zhi了大部分的JDBC代码、手工设置参数和结果dao集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。
个人理解,Mybatis就是一种对于后台的封装框架,没有对于前台文件的一些存放,通过xml文件对于SQL语句的最终执行。
2.需要的jar包:mybatis-3.2.2.jar、mysql-connector-java-5.1.49-bin.jar;
3.数据库,自己创建一个数据库,有一两个字段就行,在实体类中与之对应(一般实体类我们和表名一致);
4.新建一个Java Project项目,项目结构如下:
5.首先导入两个jar包
6.创建dao、daomain、test三个Package包
7.在src下新建com.dao包,在新建Book.java;
//我本身电脑里数据库有一个book表,这个对应自己创建就行,里面的成员变量都是你表中的字段属性
package com.dao;
import java.util.Date;
public class Book {
private char bid;
private String bname;
private String author;
private String pubcomp;
private Date pubdate;
private int bcount;
private double money;
public char getBid() {
return bid;
}
public void setBid(char bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPubcomp() {
return pubcomp;
}
public void setPubcomp(String pubcomp) {
this.pubcomp = pubcomp;
}
public Date getPubdate() {
return pubdate;
}
public void setPubdate(Date pubdate) {
this.pubdate = pubdate;
}
public int getBcount() {
return bcount;
}
public void setBcount(int bcount) {
this.bcount = bcount;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
8.在src下新建com.daomain包,然后新建Interface文件,BookMapper.java
package com.daomain;
public interface BookMapper {
public int count();
}
9.在src下新建全局配置文件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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/library"/><!--用自己的数据库名字 -->
<property name="username" value="root"/> <!-- 用自己的用户名密码 -->
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="BookMapper.xml"/> <!-- 这里配置映射文件 -->
</mappers>
</configuration>
10.新建映射配置文件BookMpper.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 namespace="com.daomain.BookMapper">
<select id="count" resultType="int">
SELECT COUNT(*) FROM book
</select>
</mapper>
11.最后建立测试类Test
package com.test;
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;
import com.daomain.BookMapper;
public class Test{
public static void main(String[] args) throws IOException {
count();
}
public static void count() throws IOException{
String resource = "Mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = factory.openSession();
//---------------
BookMapper userMapper = session.getMapper(BookMapper.class);
int book = userMapper.count();
System.out.println("你所在的表中有"+book+"条数据。");
//--------------
session.close();
}
}
常见错误: