作为ORM框架, 与Hibernate框架相比
Hibernate框架
优点:面向对象编程,设计数据库。开发效率高。学习成本低,简单。关键是学好sql编写。
使用mysql数据库
1.导入jar包
2.编mybatis-config.xml文件
配置文件中的pooled表示这是JDBC连接对象的数据源连接池的实现,
其他属性对应的是jdbc.properties的配置
mysql 的jdbc.properties配置文件
3.mybatis框架不像hibernate框架一样自动生成表,必须要提前建好表
创建实体类,与表的列对应,实体的属性名是驼峰结构对应数据库的是下划线
package sdibt.lxj.entity;
public class Book {
private int id;
private String bookName;
private Double bookPrice;
private int bookPage;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public Double getBookPrice() {
return bookPrice;
}
public void setBookPrice(Double bookPrice) {
this.bookPrice = bookPrice;
}
public int getBookPage() {
return bookPage;
}
public void setBookPage(int bookPage) {
this.bookPage = bookPage;
}
}
4.定义一个关于实体的配置文件,一般是xml文件
在mybatis-config.xml配置映射,
mybatis的sql语句都是放在这样的配置文件当中,将来dao需要执行sql语句就调用配置文件当中的就行
namespace:命名空间,为防止多个配置文件的sql有相同的id
查询标签:select
id:这条查询语句的id,将来用namespace.id的方式调用sql
resultType:返回值类型
5.测试
package sdibt.lxj.test;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import sdibt.lxj.entity.Book;
public class TestMybatis {
public static void main(String[] args) throws ClassNotFoundException {
//加载配置文件
InputStream in = String.class.getResourceAsStream("/mybatis-config.xml");
//建造session工厂
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(in);
//创建session
SqlSession session = sf.openSession();
//查询
List books = session.selectList("sdibt.lxj.entity.Book.all");
for (Book book : books) {
System.out.println(book.getBookName());
}
}
}
sql语句返回值类型:
select id as id,book_name as bookName,book_price as bookPrice,book_page as bookPage from book
如果sql语句写成:select * from book
book_name 就对应不了bookName,属性就不会赋值。
返回值类型可以使Map类型,里面装的是K,V对
现在在查询这个sql语句的话,查询到的数据每一行就会放在一个Map集合当中,多行数据仍然组成一个list集合,不过获取属性的话就要获取表的列名map.get("book_name")
List
package sdibt.lxj.util;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisUtils {
private static SqlSessionFactory sf;
static{
//加载配置文件静态代码块
InputStream in = String.class.getResourceAsStream("/mybatis-config.xml");
//2.创建session工厂
sf = new SqlSessionFactoryBuilder().build(in);
}
/**
* 获取session
* @return
*/
public static SqlSession getSession(){
SqlSession session = sf.openSession();
return session;
}
/**
* 关闭session
* @param session
*/
public static void closeSession(SqlSession session){
if(session!=null){
session.close();
}
}
}