什么是MylBatis?
mybatis是一个持久层框架
持久化:
数据从瞬时状态变为持久状态
持久层:
完成持久化工作的代码块
MyBatis就是帮助程序员将数据存入数据库,和从数据库中取数据
传统的JDBC操作:
有很多重复代码块,比如:数据取出封装,数据库建立连接等,通过框架减少代码重复,提高开发效率
MyBatis是一个半自动的ORM(对象关系映射)框架
所需jar
asm-4.2.jar
cglib-3.1.jar
commons-logging-1.2.jar
javassist-3.17.1-GA.jar
log4j-1.2.17.jar
log4j-api-2.2.jar
log4j-core-2.2.jar
mysql-connector-java-5.1.20-bin.jar
slf4j-api-1.7.12.jar
slf4j-log4j12-1.7.12.jar
cglib-3.1.jar
commons-logging-1.2.jar
javassist-3.17.1-GA.jar
log4j-1.2.17.jar
log4j-api-2.2.jar
log4j-core-2.2.jar
mysql-connector-java-5.1.20-bin.jar
slf4j-api-1.7.12.jar
slf4j-log4j12-1.7.12.jar
简单案例:
创建实体类User bean:
package entity;
public class User {
private int id;
private String name;
private String pwd;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
编写sql语句的映射文件 :
<?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="entity.userMapper">
<select id="selectUser" resultType="entity.User">
select * from user where id=#{id}
</select>
<insert id="addUser">
insert into user(name,pwd) values(#{name},#{pwd});
</insert>
</mapper>
持久层:
package dao;
import org.apache.ibatis.session.SqlSession;
import util.MyBatisUtil;
import entity.User;
public class UserDao {
public User getById(int id) throws Exception
{
SqlSession session =MyBatisUtil.getSession();
User user=session.selectOne("entity.userMapper.selectUser",1);
return user;
}
public int add(User user) throws Exception
{
SqlSession session =MyBatisUtil.getSession();
int result=session.insert("entity.userMapper.addUser");
session.close();
return result;
}
}
MyBatis工具类(创建SqlSessionFactory类):
package util;
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;
//创建sqlSessionFactory以及获得sqlSession
public class MyBatisUtil {
public static SqlSessionFactory getSqlSessionFactory() throws Exception {
String resource = "mybatis.cfg.xml";
InputStream inputstream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder()
.build(inputstream);
return sqlsessionfactory;
}
public static SqlSession getSession() throws Exception {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
return sqlSessionFactory.openSession();
}
}
Mybatis配置:
<?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/test" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="entity/userMapper.xml"/>
</mappers>
</configuration>
测试类:
package test;
import org.apache.ibatis.session.SqlSession;
import entity.User;
import util.MyBatisUtil;
public class test {
public static void main(String[] args) throws Exception {
SqlSession session =MyBatisUtil.getSession();
User user=session.selectOne("entity.userMapper.selectUser",1);
//select("包名.sqlID名称",参数)
System.out.println("id"+user.getId()+",name="+user.getName());
session.close();
}
}