MyBatis框架的配置

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录
特点:
  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
  • 解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql。

1.关于MyBatis的配置,因为MyBatis框架是一个基于java的持久层框架,所以它一个对数据库进行操作的框架。
第一步,先搭建项目结构(略),再建jdbc.properties文件,存放它连接数据所需要的东西,如用户密码,数据地址,连接所需要的。
driver=oracle.jdbc.driver.OracleDriver
username=xglo
password=xgl123
url=jdbc\:oracle\:thin\:localhost\:1521\:orcl
第二步,MyBatis的配置文件,分三步走,第一步导入之前的properties文件,做相应的配置连接。第二步设置标志,此标志是用于标记实体类的,给他们取一个别名,用于关联数据库。第三步,配置mappers( 映射器)。
<?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>
<!-- 配置变量 -->
<properties resource="jdbc.properties" ></properties>
<!-- 标志 -->
<typeAliases>
<typeAlias type="com.xgl.users.Class_tab" alias="classes"/>
</typeAliases>
<!-- 连接配置 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- Dao层 -->
<mappers>
<mapper resource="com/xgl/mapper/ClassMapper.xml" />
</mappers>
</configuration>

2.编写web项目的Dao层以及mappers,Dao类必须是接口类型,而且方法也是接口。在MyBatis框架中,所有对数据库的操作都交给了MyBatis的mappers(映射器),而映射器与Dao的连接通过MyBatis的配置文件配置,要配置出这个映射器位置。
如:
public interface ClassDao {
public void add(Class_tab tab);
public void delete(Class_tab class_tab);
public ArrayList<Class_tab> select();
public void update(Class_tab tab);
public Class_tab queryClass(int classId);
public ArrayList<Class_tab> list2(String[] tab);
public List<Class_tab> arrlist(String [] ids);
}
编写映射器文件,通过在映射器文件的mapper 标签namespace属性,配置相对应的接口Dao类。通过配置把实体类中各个属性与数据库中的表字段对应。通过标签与dao层相对应的id实现对数据库的各个操作。而映射器文件中也自带可一些标签,使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="com.xgl.classDao.ClassDao">
<!-- 关联 -->
<resultMap type="classes" id="classMap">
<id property="classid" column="CLASSID"/>
<result property="cname" column="CNAME"/>
<collection property="set" ofType="student">
<id property="studentID" column="STUDENTID"/>
<result property="Sname" column="SNAME"/>
<result property="userID" column="USERID"/>
<result property="sex" column="SEX"/>
<result property="age" column="AGE"/>
<result property="phone" column="PHONE"/>
</collection>
</resultMap>
<!-- 插入 -->
<insert id="add" parameterType="classes">
insert into class_tab(CLASSID,CNAME) values(#{classid},#{cname})
</insert>
<!-- 删除 -->
<delete id="delete" parameterType="classes">
delete from class_tab where classid=#{classid}
</delete>
<!-- 查询 -->
<select id="select" resultType="classes">
select * from class_tab where 1=1
</select>
<!-- 修改 -->
<update id="update" parameterType="classes">
update class_tab set cname=#{cname} where classid=#{classid}
</update>
<!-- 一对多查询 -->
<select id="queryClass" parameterType="int" resultMap="classMap">
select * from class_tab c,student s where c.classid=s.classid and c.classid=#{classId}
</select>
<!--if、查询 -->
<select id="list2" parameterType="classes" resultMap="classMap">
select * from class_tab
<!--where 自动忽略 and-->
<!--
<where>
<if test="classid==0">
and classid=1
</if>
<if test="classid!=0">

</if>
</where>
-->
<!-- if else 语句 -->
<where>
<choose>
<when test="classid==0">
and classid=1
</when>
<otherwise>
and classid=#{classid}
</otherwise>
</choose>
</where>
<!--set 自动忽略 逗号,在更新时使用-->
<!-- <set></set> -->
<!--trim prefix:开头 suffixOverrides 自动忽略 -->
<!--<trim prefix="set" suffixOverrides=","></trim>-->
</select>
<!-- foreach -->
<select id="arrlist" resultType="classes" >
select * from class_tab where classid in
<foreach collection="array" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>

现在关于MyBatis框架的搭建就已经好了,但是我们要用起来。
//mybatis的配置文件,使用类加载器加载mybatis的配置文件(它也加载关联的映射文件) InputStream is= Resources.getResourceAsStream("mybatis.xml");
//构建sqlSession的工厂
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(is);
//创建能执行映射文件中sql的sqlSession
SqlSession session=sqlSessionFactory.openSession();
//拿到ClassDao类的Mapper,就可以直接使用了
ClassDao classDao= session.getMapper(ClassDao.class);
//使用classDao的方法
classDao.add(tab);
//使用完成之后要提交和关闭
session.commit();
session.close();



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值