zoukankan      html  css  js  c++  java
  • mybatis

    一.mybatis的使用

    1.原始的dao开发,dao接口+dao实现类

    2.使用mapper接口,

    mapper接口相当于dao的接口

    配置文件分成两块(全局的配置文件,映射文件)

    mybatis的优势一部分是支持动态sql

    mybatis.xml头文件内容用于识别整个xml文件是否出错,如下:

    <!DOCTYPE configuration  
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

    以下是mapper的头文件:

    <!DOCTYPE mapper PUBLIC   
        "-//mybatis.org//DTD Mapper 3.0//EN"  
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    开始使用mybatis

    首先需要下载mybatis数据包

    配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC   
        "-//mybatis.org//DTD Mapper 3.0//EN"  
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <properties resource="db.profile"></properties><!-- resource:资源property:性质、属性,在这个文件上写jdbc -->
        <environments default="own">
            <environment id="own">
                <transactionManager type="jdbc"></transactionManager>
                <dataSource type="POOLED"><!-- 表示已经缓存了 -->
                    <property name="driver" value="${driver}"></property>
                    <property name="url" value="${url}"></property>
                    <property name="username" value="${username}"></property>
                    <property name="password" value="${password}"></property>
                </dataSource>
            </environment>
        </environments>
    </configuration>

    映射文件:

    <?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="xxxx.uuuu">
        <select id="sele" parameterType="int" resultType="nf.entity.User">
            select * from tt4 where id=#{id};
        </select>
    </mapper>

    使用dao层调用这个mybaties所有文件

    package nf.dao;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import nf.entity.User;
    
    public class UserDaoImpl implements UserDao {
        @Override
        public User getUserById(int i)  {
            try {
                InputStream inputStream = Resources.getResourceAsStream("/sqlMapConfig.xml");
                SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
                SqlSession session = sessionFactory.openSession();
                User user = session.selectOne("nf.entity.getUserById", i);//mapper的空间名加id(方法)名,所传的值
                session.close();
                return user;
            } catch (IOException e) {
                System.out.println("异常:"+e.getMessage());
                e.printStackTrace();
                return null;
            }
        }
    }

     就可以用servelt调用这个dao层了

    返回值映射:有多少个列就设置多少个result,id为主键

    写typeAliases会使mapper自动扫描你定义的javabean

    1.2使用java代替session.select()的方法

    注意:这个空间名要和放java类的包名一样

    1.3.使用标识符来代替mapper的xml文件

    package mappers;
    /** 实现类,不需要程序员写,是MyBatis自动在内存中完成*/
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Result;
    import org.apache.ibatis.annotations.Results;
    import org.apache.ibatis.annotations.Select;
    
    import entity.User;
    @Mapper
    public interface mapper {
        @Select("select * from user1")
        @Results({
            @Result(id=true,property="id",column="id"),
            @Result(property="userName",column="name"),
            @Result(property="sex",column="sex")
        })
        List<User> getall();
    }

    下面的mapper扫描也需要修改为class

  • 相关阅读:
    转:C++ 智能指针的正确使用方式
    C/C++各个周期的学习
    转: 工作中用的C++库
    转:【软件设计】深入理解日志系统的意义
    初级爬虫第四天
    初级爬虫第三天
    初级爬虫第二天
    初级爬虫第一天
    pep8介绍
    MySQL训练营01
  • 原文地址:https://www.cnblogs.com/5858y/p/8776249.html
Copyright © 2011-2022 走看看