- Mybits简单介绍
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 - Mybits安装
Mybits只用将对应的jar包导入项目,就可直接使用其中的类来管理数据库访问层次的代码。使用maven项目的话,将其服务添加到pom.xml中。 - 使用规则
- 首先需要创建有关mybits的配置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">
<!-- XML 配置文件包含对 MyBatis 系统的核心设置 -->
<configuration>
<!-- <properties resource="jdbc.properties" /> -->
<!-- 指定 MyBatis 所用日志的具体实现 -->
<!-- <settings> <setting name="logImpl" value="LOG4J"/> </settings> -->
<environments default="mysql">
<!-- 环境配置,即连接的数据库。 -->
<environment id="mysql">
<!-- 指定事务管理类型,type="JDBC"指直接简单使用了JDBC的提交和回滚设置 -->
<transactionManager type="JDBC" />
<!-- dataSource指数据源配置,POOLED是JDBC连接对象的数据源连接池的实现。 -->
<dataSource type="POOLED">
<!--<property name="driver" value="${driver}"/> <property name="url"
value="${url}"/> <property name="username" value="${username}"/> <property
name="password" value="${password}"/> -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/DB_POS" />
<property name="username" value="×××" />
<property name="password" value="×××" />
</dataSource>
</environment>
</environments>
<!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 -->
<mappers>
<mapper resource="mapper.xml" />
</mappers>
</configuration>
使用mybits的持久化操作类之前,都需要加载配置文件,因此,需要首先创建,当然。对于其中的有关配置还有好多,上面代码只是最基本的配置。
- 建立映射文件
上面的配置文件中可以看到属性,中间需要添加对应的映射文件具体位置。简单的代码如下:
<?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">
<insert id="save" parameterType="com.example.POS.AdminInfo" useGeneratedKeys="true">
insert into AdminInfo(Aid,Aname,Apwd,Alevel) values(#{aid},#{aname},#{apwd},#{alevel})
</insert>
<select id="select" parameterType="String" resultType="map">
select * from AdminInfo where Aname= #{aname}
</select>
<update id="update" parameterType="com.example.POS.AdminInfo">
update AdminInfo set Aname=#{aname},Apwd=#{apwd},Alevel=#{alevel} where Aid=#{aid}
</update>
<delete id="delete" parameterType="String">
delete from AdminInfo where Aid=#{aid}
</delete>
</mapper>
首先介绍一下该类映射文件中需要填入哪种内容。答案显而易见,填入的是sql语句,对于不同的sql语句使用不同的元素进行书写。不同的元素中又有不同的属性,以保证查询返回结果和检索条件的格式以及内容无误。
id是为改次的操作定义名字
useGeneratedKeys 用与(insert和update使用) 对于自动递增的列,可以设置为true,使用数据库自动生成
parameterType 用于表示传递数据或者索引条件的格式,可以是自定义类或者其他数据类型。类需要写出完全路径,否则无法识别
resultType 用于定义返回数据的类型,mybits可以直接将查询到的数据转化为相应的类或者是列表。
这三种是代码上用到的数据类型,这里只是使用这些元素简单实现了insert, update, delete , select。
- 上面的xml文件穿件完毕之后,接下来就是类中的具体秩序化操作
首先介绍一下mybits所需的持久化操作类 SqlSession 以及 SqlSessionFactory。
SqlSessionFactory
每一个Mybits应用程序都以一个SqlSessionFactory对象为核心,一旦被创建,应该在执行程序期间都存在。
常用方法 SqlSession openSession()
SqlSession
持久化操作对象,是应用程序和持久存储层之间执行交互操作的一个单线程对象。包含以数据库为背景的所有执行sql操作方法,底层封装了JDBC链接,可以直接执行已经映射的SQL语句。每一个线程都应该有自己的sqlsession实例,并且不被共享。
该实例的引用不可放在一个雷的静态字段和实例字段中,或者是放在任何类型的管理范围。sqlSession使用之后,需要尽快关闭。
简单使用,代码如下:
SqlSession session = null;
try (InputStream is = Resources.getResourceAsStream("mybatis.xml");){
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
session = sqlSessionFactory.openSession();
AdminInfo adminInfo = new AdminInfo("16", "asda", "asda", "asda");
session.insert("mapper.save", adminInfo);
session.commit();
List list = session.selectList("mapper.select","asda");
list.forEach(row ->System.out.println(row));
session.delete("mapper.delete","11");
session.commit();
}catch(Exception e){
// session.rollback();
e.printStackTrace();
}finally {
try {
if(session!=null) session.close();
}catch(Exception e) {
e.printStackTrace();
}
}
SqlSession的使用需要首先创建inputStream类,将配置文件写入,只有使用SqlSessionFactory来开启SqlSession。
然后就是直接调用session中的方法,将映射文档中的元素调用,传入检索条件,或者是接收返回的数据。对于需要更新数据库的操作(insert,update,delecte)需要调用commit()方法。
注意:使用过后的session,需要尽快关闭。