您的位置:首页 > 其它

Mybatis框架学习笔记 lesson1

2016-09-06 15:22 337 查看

Mybatis

   操作数据库 ORM框架(配置映射  输入参数 输出参数映射) 
   编写sql语句, sql语句----方法映射

   JDBC     返回的是结果集

   Mybatis: 返回的是对象

引入JAR包

asm-3.3.1.jar

cglib.2.2.2.jar

commons-logging-1.1.1.jar

javassist-3.17.1.-GA.jar

log4j-1.2.17.jar

mybatis-3.2.0.jar

mysql-connctor-java-5.1.16-bin.jar

slf4j-api-1.7.2.jar

slf4j-log4j12-1.7.2.jar

SqlMapConfig.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">

<!-- 配置数据库环境 -->

<configuration>

     <!-- 加载.properties属性文件  指定文件路径 -->

<properties resource="jdbc.properties"/>  

    <!-- 给类型  定义别名 -->

    <typeAliases>

<typeAlias type="entity.Dept" alias="d"/>

<!-- 如果类名很多 都需要起别名  可以指定包名进行全包扫描  别名默认就是类名或者类名小写都可以   -->

<!-- <package name="entity"/> -->

    </typeAliases>

    

<environments default="mysql">

 <environment id="mysql">

    <!-- 指定事务的类型  JDBC事务  -->

    <transactionManager type="JDBC"></transactionManager>

     <!-- 数据源连接池 -->

<dataSource type="POOLED">

 <property name="url" value="${url}"/>

 <property name="driver" value="${driver}"/>

 <property name="username" value="${user}"/>

 <property name="password" value="${pwd}"/>

</dataSource>

 </environment>

 

 <environment id="oracle">

    <!-- 指定事务的类型  JDBC事务  -->

    <transactionManager type="JDBC"></transactionManager>

     <!-- 数据源连接池 -->

<dataSource type="POOLED">

 <property name="url" value="jdbc:oracle:thin@localhost:1521:XE"/>

 <property name="driver" value="jdbc.oracle.driver.OracleDriver"/>

 <property name="username" value="system"/>

 <property name="password" value="tiger"/>

</dataSource>

 </environment>

</environments>

<mappers>

<!-- 引入映射文件 -->

  <!--  
      如果Mapper代理接口名和Mapper映射文件同名且在同一个位置下 
        这里可以使用全包扫描,将指定的包下的所有映射文件进行加载  不需要一一引入
     <package name="mapper"/> 

  -->   

<mapper  resource="entity/DeptMapper.xml"/>

</mappers>

</configuration>

DeptMapper.xml

<?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">

<!-- namespace:命名空间  修饰id的     -->

<mapper namespace="mybatis">

   <!--输入参数类型:parameterType

           如果是对象类型:占位符#{} 中就必须用 属性名   eg: #{dno}

          如果是普通类型(基本类型+String)   #{}中可以写任何值  一般建议用value

         -->

   <insert id="insertDept"  parameterType="d">

      insert into dept(dno,dname,loc) values(#{dno},#{dname},#{loc})

   </insert>

    <!-- 

      resultType:输出映射(返回结果映射)

         select *     的一条记录 封装成一个什么类型的对象

    -->

   <select id="selectOne" parameterType="int" resultType="d">

     select * from dept where dno=#{aaaaaa}

   </select>

   <!-- 

     resultType:输出映射(返回结果映射)

         select *   的一条记录封装成一个什么类型的对象

    -->

   <select id="selectAll" resultType="d">

     select * from dept

   </select>

   

   <delete id="deleteOne"  parameterType="int">

     delete from   dept where dno=#{value}

   </delete>

   

   <update id="updateOne" parameterType="entity.Dept">

    update dept set dname=#{dname},loc=#{loc} where dno=#{dno}

   </update>

    <resultMap type="d" id="myResultMap">

      <id column="_dno" property="dno"/>

      <result column="_name" property="dname"/>

      <result column="_loc" property="loc"/>

     </resultMap>

   

   <!-- 如果 字段类型和属性类型一致 就可以成对象类型

         如果字段类型和属性类型不一致  就不会映射成对象类型 

         可以通过resultMap来 配置属性和字段的对应

        

    -->

   <select id="select2" resultMap="myResultMap">

     select   dno _dno,dname _name,loc _loc from dept 

   </select>

</mapper>

封装SessionUtils

public class SessionUtils {

static  SqlSessionFactoryBuilder builder=null;

static SqlSessionFactory sqlSessionFactory = null;

static{

try {

InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");

builder = new SqlSessionFactoryBuilder();

sqlSessionFactory = builder.build(in);

} catch (IOException e) {

e.printStackTrace();

}

}

public static SqlSession  getSession(){

SqlSession session= sqlSessionFactory.openSession();

return session;

}

}

Mapper代理开发

  Mapper代理本质就是一个接口,符合一定规则就会自动生成

  代理接口的实现类.

 符合以下四个要求:

    namespace==DeptMapper的路径
    Mapper代理接口的方法名与映射文件id保持一致,
    Mapper代理接口中方法的参数与映射文件parameterType一致
    Mapper代理接口中方法的返回结果与映射文件resultType一致 

   Mybatis就会自动生成 DeptMapper的实现类.

接口

public interface IDeptDao   {

public Dept findById(int id);

public void   delete(int id);

public void  update(Dept d);

public void insertDept(Dept d);

}

测试

SqlSession session = SessionUtils.getSession();

//返回的是DeptMapper代理的实现类对象

DeptMapper mapper = session.getMapper(DeptMapper.class);

List<Dept> list = mapper.selectAll();

session.close();

//增删该需要事务

mapper.insertDept(dept);

session.commit();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: