DBMNG数据库管理与应用

书籍是全世界的营养品。生活里没有书籍,就好像没有阳光;智慧里没有书籍,就好像鸟儿没有翅膀。
当前位置:首页 > MySQL > 基础知识

MyBatis使用学习心得

1、MyBatis简介
Mybatis是基于Java的持久层框架,也是开源的,在使用之前先导入和mybatis有关的jar包,下载地址:http://code.google.com/p/mybatis/;支持普通的SQL查询、存储过程和高级映射的优秀持久层框架。把JDBC代码封装起来,使用简单的XML配置文件,将sql代码从程序代码中彻底分离出来,将接口和Java的POJOs(Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得,SqlSessionFactoryBuilder可以从一个xml配置或一个预定义的配置类的实例获得。
在spring配置文件中注入mybatis,如:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.bean" />
</bean>
 
2、MyBatis自动装配
     Spring中自动注入mybatis配置文件,使用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将他们创建成MapperFactoryBeans,代码如下:
<!-- scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.dao" />
</bean>
BasePackage属性是让你位映射器接口文件设置基本的包路径。使用逗号或分号可设置多个包路径。
 
3、xml配置文件字段介绍StudentMapper.xml
(1)、namespace是dao接口所在包和接口名的全称,
<?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">
<!-- 在dao实现中可以使用,直接调用其方法,namespaces是接口路径 -->
<mapper namespace="com.hsi.wtw.dao.StudentMapper">
</mapper>
(2)insert字段是负责往数据库中插入字段,parameterType是数据类型,这个数据类型包括基本数据类型和javabean对象,中间放入sql插入语句
<insert id="insert" parameterType="Student">
         insert into
         student
         values(#{sno},#{sname},#{ssex},#{sage},#{sdept})
     </insert>
(3)delete字段是用来删除数据库中数据的,update用来更新数据库,parameterType是参数类型,可以是基本数据类型也可以是对象
<delete id="delete" parameterType="int">
         delete from student where sno=#{sno}
     </delete>
     <update parameterType="Student">sql语句</update>
(4)select字段是选择语句,可以根据一个参数去查找也可以直接查找全部,resultMap是定义一个数据结果集合,property是对应javabean里的属性,column是对应sql语句里查出的数据库中的字段
<select parameterType="int"  resultMap="Student">sql语句</delete>
<!-- 定义一个map -->
     <resultMap type="Student" id="studentMap">
            <id property="sno" column="sno"/>
            <result property="sname" column="sname"/>
            <result property="ssex" column="ssex"/>
            <result property="sage" column="sage"/>
            <result property="sdept" column="sdept"/>
           
     </resultMap>
(5)、动态sql语句<if>判断一下值是否为空,然后可以添加动态sql语句
    <update id="updateStudent" parameterType="Student">
   update student
   set name=#{name},
   <if test="sno!=null">
      sno=#{sno},
   </if>
   where id=#{id}
</update>
(6)、为了实现查询结果与实体的映射,需要修改resultMap元素,association就是解决这的,来定义一个resultMap集合,来接收多表查询结果
    <resultMap id="studentResultMap"type="Student">
    <!--普通属性映射与以前一致-->
    <idproperty="id"column="id"/>
    <resultproperty="name"column="name"/>
<resultproperty="sno"column="gender"/>
<!--property="supervisor"表明这是为了映射学生实体的teacher属性。javaType="Teacher"用到了Teacher这个别名定义,并指出了teacher属性的java类型-->
    <association property="teacher"javaType="Teacher">
    <!--教师自身的属性与数据库字段的映射。注意这里用到了字段别名-->
    <id property="id"column="t_id"/>
    <result property="name"column="t_name"/>
    <result property="gender"column="t_gender"/>
    <result property="researchArea"column="research_area"/>
    <result property="title"column="title"/>
    </association>
</resultMap>
作者:smallroad
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号