Mbatis

作者: 尽人事听天命_6c6b | 来源:发表于2019-07-01 18:01 被阅读0次

    架包和日志的配置文件不一一列举了
    一.核心配置文件
    <?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="datainfo.properties"></properties>

    <!-- 
    typeAliases用来给类起别名的,简化全类名的编写 
    typeAliases中可以有多个typeAlias元素,每一个就是针对一个类定义的别名
    type:要设定别名的类的全类名     alias:别名
    mybatis内置的别名
    Integer    Long    Double   List   Map   Set
    int   long 
    
    package元素中name属性扫描实体属性所在的包,别名默认为实体类的的名
    -->
    <typeAliases>
    <!-- <typeAlias type="mybaentity.User" alias="User"/> -->
    <!-- <package name=""/>是扫描哪个包下面的所有接口 -->
    <package name="mybaentity"/>
    </typeAliases>
    
    
    <!-- default与id的名称相同,根据id的名称找到数据库 -->
    <environments default="mybati">
        <environment id="mybati">
            <!--
             处理事物的类型 
             事务管理:
             jdbc:以传统的jdbc方式来提交回滚事物,设置了事物,自动提交就会关闭
             MANAGED:以第三方框架的形式来管理事物(spring,Tomcat)
            -->
            <transactionManager type="jdbc"></transactionManager>
            <!--
             数据库连接池类型
             数据库连接池:
             POOLED:使用连接池
             UNPOOLED:不使用连接池
             JNDI:
             -->
            <dataSource type="POOLED">
                <!-- 链接数据库的流程 -->
                <property name="driver" value="${DRIVER}" />
                <property name="url" value="${DBURL}" />
                <property name="username" value="${USERNAME}" />
                <property name="password" value="${USERPWD}" />
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <!-- 映射找到对应的mapper的核心管理文件,注意只能用斜杠 -->
        <!-- <mapper resource="mybaentity/mapper/User.xml"></mapper> -->
        <!-- 映射到整个包来加载  用扫描包xml必须与对应接口同名同包-->
        <package name="mybaentity.mapper"/>
    </mappers>
    

    </configuration>

    二 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="mybaentity.mapper.UserMapper">

    <select id="getSelectId" parameterType="int" resultType="User">
    select * from user where userid = #{userid}
    </select>
    <select id="selectAll" resultType="User">
    select * from user
    </select>
    

    </mapper>

    三.链接数据库的文件
    DRIVER=com.mysql.jdbc.Driver
    DBURL=jdbc:mysql://localhost:3306/demo06?useUnicode=true&characterEncoding=utf8

    DBNAME=ORCL

    USERNAME=root
    USERPWD=940906

    四.如何利用Mybatis进行数据交互
    //利用mybatis的API根数据库进行交互
    //加载核心配置文件,参数值是核心配置文件相对于src的路径
    Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
    //构建连接池
    SqlSessionFactory sFactory = new SqlSessionFactoryBuilder().build(reader);
    //获取链接对象
    SqlSession session = sFactory.openSession();
    //调用mapper中的接口 mapper也就是原来的DAO
    UserMapper uMapper = session.getMapper(UserMapper.class);
    //调用方法
    User user = uMapper.getSelectId(1);
    System.out.println();
    List<User> list = uMapper.selectAll();
    for (User user2 : list) {
    System.out.println(user2.getPhone());
    }
    System.out.println(user.getPossword());

    五.一对一


    <mapper namespace="mybaentity.mapper.OneToOneMapper">

    <select id="getUertByName" parameterType="String" resultMap="byname">
    select * from user u,city c where u.cityid = c.cityid and username =
    #{username}
    </select>
    <resultMap type="User" id="byname">
        <result property="userid" column="userid" />
        <result property="username" column="username" />
        <result property="possword" column="possword" />
        <result property="email" column="email" />
        <result property="phone" column="phone" />
        <association property="city" column="cityid" javaType="City"
            resultMap="cityResult" />
    </resultMap>
    <resultMap type="City" id="cityResult">
        <result property="cityid" column="cityid" />
        <result property="cityname" column="cityname" />
    </resultMap>
        
        
        
        
        
        
    <!-- <select id="getUertByName" parameterType="String" resultMap="byname">
        select * from user where username = #{username}
    </select>
    
    <resultMap type="User" id="byname">
        
            property:嵌套查询返回的结果赋值给当前类的哪个属性
            column:数据库中外检列的名字
            javaType:嵌套查询返回的结果集类型
            select:要嵌套的查询select元素的id值
        
        <association property="city" column="cityid" javaType="City" select="cityselect"/>
    </resultMap>
    
    <select id="cityselect" parameterType="int" resultType="City">
        select * from city where cityid = #{cityid}
    </select> -->
    

    </mapper>

    六.增删改查

    <mapper namespace="mybaentity.mapper.UserManagerMapper">

    <select id="getUser" parameterType="map" resultType="User">
    select * from user where username = #{k_username} and possword = #{k_possword}
    </select>

    <!-- 添加 -->
    <insert id="insertUser">
    insert into user(username,possword,email,phone) values(#{username},#{possword},#{email},#{phone})
    </insert>
    <!-- 删除一个 -->
    <delete id="deleteUser">
    delete from user where userid = #{userid}
    </delete>
    <!-- 删除多个 -->
    <delete id="deleteUserAll">
        delete from user where userid in
        <!-- 
        遍历数组或者集合
        collection:元素的参数类型   
        item:条件 (当前遍历的元素)   
        open:得到(   (得到的元素以什么字符开始) 
        close得到) (得到的元素以什么字符结束)
        separator:用,号分割(用什么来分割)
         -->
    
        <foreach collection="array" item="userid" open="(" close=")" separator=",">
            #{userid}
        </foreach>
    </delete>   
    <!-- 修改 -->
    <update id="updateUser">
    update user set username = #{username},possword = #{possword},email = #{email} where userid = #{userid} 
    </update>
    

    </mapper>

    七.一对多



    <mapper namespace="mybaentity.mapper.OneMoreMapper">
    <select id="getProvinceByName" parameterType="int" resultMap="pro_mapper">
    select * from Province p,city c where p.pr_id=c.pr_id and p.pr_id =
    #{p.pr_id}
    </select>
    <resultMap type="Province" id="pro_mapper">

        <!-- 一对多:property:返回集合赋值给当前类的哪个属性
              ofType:集合当中每个元素的类型 -->
        
        <result column="pr_id" property="pr_id" />
        <result column="pr_name" property="pr_name" />
        <collection property="cities" ofType="City">
        <result column="cityid" property="cityid"/>
        <result column="cityname" property="cityname"/>
        </collection>
    </resultMap>
    

    </mapper>

    八.动态SQL



    <mapper namespace="mybaentity.mapper.DynamicSelectMapper">

    <select id="get" parameterType="User" resultType="user">
    select * from user
    <where>
    <if test="city.cityid !=null and city.cityid !=0">
    and cityid = #{city.cityid}
    </if>
    <if test="email!=null and email !=''">
    and email = #{email}
    </if>
    <if test="phone!=null and phone !=''">
    and phone = #{phone}
    </if>
    </where>
    </select>
    </mapper>

    图片.png

    相关文章

      网友评论

        本文标题:Mbatis

        本文链接:https://www.haomeiwen.com/subject/qvencctx.html