一、Mybatis简介
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。同hibernate一样都是对数据库进行操作的框架,但是hibernate是全封装的,mybatis是半封装,他的着力点,则在于POJO与SQL之间的映射关系。
二、Mybatis搭建
1.首先建立一个pojo类
定义了一个实体类有四个属性,然后生成get和set方法,注意这里的类必须实现这个接口实现序列化。
2.o
2.配置映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<!--这里的namespace相当于给实体类分配一个空间,里面的内容是描述实体类和表的关系和写sql语句-->
<mapper namespace="com.dao.GoodsDao">
<!--这是一个插入语句,id的作用是待会传数据的一个标记,因为我们是要添加一个物品,所有类型为pojo类-->
<insert id="add" parameterType="com.pojo.GoodsPojo">
<!--插入的sql语句-->
insert into goods(goodsname,goodscount,goodspic) values(#{goodsname},#{goodscount},#{goodspic})
</insert>
</mapper>
注意,在同一个命名空间里面,id(可以理解成方法名)不能重复。
3.总的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
<environments default="MySQL">
<environment id="MySQL">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="UNPOOLED">
<property name="driver"
value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://127.0.0.1:3307/goods" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mapper/studentMapper.xml" />
</mappers>
</configuration>
总的配置文件配就是连接数据库的参数,然后有个mapper标签就是加载映射文件的路径,注意路劲和名子不能写错。这个文件放在配置文件的根目录。
4.测试
package mybatis;
import java.io.IOException;
import java.io.Reader;
import javax.annotation.Resource;
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.pojo.GoodsPojo;
public class AddGoods {
public static void main(String[] args) throws IOException{
//读取总的配置文件
Reader reader = Resources.getResourceAsReader("sqlMapconfig.xml");
//创建session工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
//打开session
SqlSession session = factory.openSession();
//新增
GoodsPojo pojo = new GoodsPojo();
pojo.setGoodsname("冰箱");
pojo.setGoodscount(10);
pojo.setGoodspic("500");
int n = session.insert("com.dao.studentDao.add",pojo);
System.out.println(n);
//提交事务
session.commit();
//关闭事务
session.close();
}
}
运行测试类后的结果