zoukankan      html  css  js  c++  java
  • mybatis的学习2_____配置文件的详解和代码的优化

    1.配置文件的解析:

    mybatis-config.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 resource="database.properties"/>
    
        <!--配置环境 这里可以有多套环境 default是代表默认的那一套环境-->
        <environments default="development">
            <!--环境的id 即环境的名字-->
            <environment id="development">
                <!--transactionManager 事务管理,type:JDBC-->
                <transactionManager type="JDBC"></transactionManager>
                <!--dataSource:数据源-->
                <dataSource type="POOLED">
                    <!--xml中 不允许使用 ? 得用 &amp;  替换-->
                    <property name="driver" value="${driver}"></property>
                    <property name="url" value="${url}"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                </dataSource>
            </environment>
        </environments>
    
        <!--关联映射文件-->
        <mappers>
            <mapper resource="com/xbf/dao/userMapper.xml"/>
        </mappers>
    
    </configuration>
     一些参数的详解:
     configuration: 配置
     <properties resource="database.properties"/> :properties配置文件

     typeAliases   为Java类起别名
     plugins :插件 
    environments :环境
     <transactionManager type="JDBC"></transactionManager> JDBC事物管理
     <dataSource type="POOLED">:数据源
     <!--关联映射文件  映射器-->
        <mappers>
            <mapper resource="com/xbf/dao/userMapper.xml"/>
        </mappers>

    2.代码的优化:

    1.创建database.properties

    driver=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
    username=root
    password=1234567890

    再在mybatis-config.xml核心配置文件中引入properties,并用${}表达式,引入其中的值;

    <?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="database.properties"/>
    
    <!--配置环境 这里可以有多套环境 default是代表默认的那一套环境-->
    <environments default="development">
        <!--环境的id 即环境的名字-->
        <environment id="development">
            <!--transactionManager 事务管理,type:JDBC-->
            <transactionManager type="JDBC"></transactionManager>
            <!--dataSource:数据源-->
            <dataSource type="POOLED">
                <!--xml中 不允许使用 ? 得用 &amp;  替换-->
                <property name="driver" value="${driver}"></property>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    
    <!--关联映射文件-->
    <mappers>
        <mapper resource="com/xbf/dao/userMapper.xml"/>
    </mappers>
    
    </configuration>

    2.优化别名:(目的为了不再useMapper.xml使用全类名,书写繁琐)

    在mybatis-config.xml中添加标签 

        <typeAliases>
            <typeAlias type="com.xbf.pojo.User" alias="User"/>
        </typeAliases>

    在userMapper.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">
    
    <mapper namespace="com.xbf.dao.UserMapper">
        <select id="getUser" resultType="User">
            select * from user
        </select>
    
        <insert id="addUser" parameterType="User">
    
            insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
        </insert>
    
        <delete id="deleteById" >
            delete from user where id=#{id}
        </delete>
    
        <update id="modify" parameterType="User">
            update user set id=#{id},name=#{name} where id=#{id}
        </update>
    
        <select id="getById" resultType="User">
            select * from user where id=#{id}
        </select>
    
    
    </mapper>

    3.mybatis-config.xml中映射器的编写:

      <mappers>
            <mapper resource="com/xbf/dao/userMapper.xml"/>
        </mappers>
    
    (推荐使用 resource)

    4.解决属性名和字段名不一致的情况:

    数据库  字段名  id  name  pwd 

    POJO   属性名  id name  password 

    eg:  select * from user   ==  select  id,name,pwd from user

    mybatis会根据数据库的字段名去找对应的实体类的属性名,(他会将所有列名转换为小写,然后去找实体类中对应的 set方法 ,set方法后面的字段就对应数据库的字段名;如果不一样就会返回null)

    返回的结果:

    [User{id=1, name='狂神', p='null'}, User{id=2, name='老七', p='null'}, User{id=3, name='李四', p='null'}, User{id=4, name='张三', p='null'}]

    解决方法:

    1.修改set方法;

     public void setPwd(String p) {
            this.p = p;
      }

    2.给sql的字段取别名;

    <select id="getUser" resultType="User">
            select id,name,pwd as p from user
    </select>

    3.结果集映射ResultMap(最推荐的方式)

        <resultMap id="UserMap" type="User">
            <!--一般通过id标签映射主键-->
            <!--column 数据库的字段名-->
            <!--property pojo中的属性名-->
    
            <id column="id" property="id"></id>
            <result column="name" property="name"/>
            <result column="pwd" property="p"/>
    
        </resultMap>
    <select id="getUser" resultMap="UserMap">
            select * from user
    </select>
  • 相关阅读:
    INFORMATION_SCHEMA.COLUMNS表的字段信息
    如何取得一个数据表的所有列名
    CASE 函数
    Js定制窗口
    获取当前数据库中的所有用户表
    Js让状态栏不显示链接地址
    RA病人关节残障与软骨破坏而非骨破坏相关
    抗阿达木单抗的抗体可能与阿达木单抗治疗过程中静脉和动脉血栓事件相关
    长期应用阿达木单抗时所产生的抗抗体会影响疗效
    多普勒超声预测抗TNFα治疗类风湿关节炎患者的有效性:一项前瞻性队列研究
  • 原文地址:https://www.cnblogs.com/xbfchder/p/11235267.html
Copyright © 2011-2022 走看看