- mybatis介绍
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
对于Mybatis的初始学习,推荐大家参考官网的教程进行初步学习Mybatis官网,里面介绍了对xml文件的内容表示我们只需进行学习,直接使用即可。
例如:创建第一个xml文件,只需要将官网提供的代码拿来使用就好。不难发现,里面主要是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="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
- Mapper映射器
帮助Mybatis使用SQL语言,告诉 MyBatis 到哪里去找映射文件。对于上个模块的sql文件,mybatis没有办法去识别并找到,这里就要体现mapper的作用。
定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下,这里并不是硬性要求,保证他们的存放路径名称相同即可。
如图:复制两个路径
com/mapper/GoodsMapper.java
com/mapper/GoodsMapper.xml
在xml文件添加java文件
<mapper namespace="com.mapper.GoodsMapper"></mapper>
此外 可以使用maven插件查看两个文件是否放到了同一个目录下。setting/plugins/maven helper
回到程序,右键run maven / compile,在控制台显示的文件查看其是否位于同一个目录下面。
完成相关配置后进行实际操作。
- 封装数据库参数,通过get /set/tostring方法
- 在java文件里面写需要使用的方法(增删改查)
Good select();
void add(Good good);
int updata(Good good);
void deleteById(int id);
//批量删除
void deleteByIds(int[] ids);
3.在对应得Xml文件里面写相应的sql语句。(在写完java文件所需的的方法后,alt+enter在相应的方法处,系统会为我们跳转并提供方法,我们只需进行sql语句的编写)
<select id="select" resultType="Good">
select *
from tb_goods
</select>
<insert id="add" useGeneratedKeys="true" keyProperty="id" >
insert into tb_goods(goods_name,company_name,ordered,description,status)
values (#{goods_name},#{company_name},#{ordered},#{description},#{status});
</insert>
<delete id="deleteById">
delete from tb_goods
where id in=#{id} ;
</delete>
id即为你所要使用的sql的方法,resultType=""查询数据是需要返回数据的封装类名称。
4.在test目录下创建test.java文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取sqlsession
SqlSession sqlSession = sqlSessionFactory.openSession(true); //添加时提交事务
//获取mapper接口代理对象
GoodsMapper goodsMapper = sqlSession.getMapper(GoodsMapper.class);
List<Good> select = goodsMapper.select(Good);
System.out.println(select);
上面代码写入test,不用记住,在mybatis官网给我们提供了的。注意对于 resource文件的正确使用。