zoukankan      html  css  js  c++  java
  • Mybatis 别名机制,自动扫描 数据的增删改

    mybatis别名机制:

    在mybatis.xml文件中的<configuration></configuration>标签中间加入属性<typeAliases></typeAliases>

    <?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>
        <!-- 类型别名 -->
        <typeAliases>
    <!--         <typeAlias type="com.maya.model.TUser" alias="test"/> --><!-- 别名 -->
        <package name="com.maya.model" /> <!-- 有点像spring中的那个扫描器 -->
        </typeAliases>
        
        
        <environments default="test1">
                <environment id="test1">
                    <transactionManager type="JDBC"></transactionManager>
                    <dataSource type="POOLED">
                        <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>   
                        <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>    
                        <property name="username" value="zhao"/>
                        <property name="password" value="123"/>
                    </dataSource>
                </environment>
        </environments>
        <mappers>
            <mapper resource="com/maya/dao/TUserMapper.xml"/>
        </mappers>
    
    </configuration>

    此时,在TUserMapper.xml文件中,将resultType改一下

    <?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.maya.dao.TUserMapper"><!-- 一般的命名规则,包名开始,到对应的配置文件结束 -->
        
        <!-- <select id="List" resultType="com.maya.model.TUser" >-->    <!--  原来的的样式 -->
    <!--     <select id="List" resultType="test" >          -->                    <!-- 用别名的方式 -->
        <select id="List" resultType="tUser">    <!-- 扫描的方式,命名规则:对应的类的名,首字母小写 -->
        select * from t_user 
        </select>
    </mapper>

     经测试,依然可以执行

    假设数据库中的列名与实体类中的数据类型对应不起来,那么需要在配置文件中加入如下代码

    <?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.maya.dao.TUserMapper">
        
        <!-- 需要加的部分 -->
        <resultMap type="tUser" id="user">
            <result property="username1" column="username" jdbcType="number" javaType="int"/>
            <!--property是实体类中的属性,column是数据库中的字段 jdbctype 数据库中的字段类型  -->
        </resultMap>
        
        
        <select id="List" resultType="tUser">    
        select * from t_user 
        </select>
    </mapper>

    增删改:

    添加:

    <?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.maya.dao.TUserMapper">
    
        
        <insert id="add" parameterType="TUser">    <!--传过来的实体类  -->
            insert into t_user values(#{id},#{userName},#{password})<!--sql语句,里面对应着实体类的值,这里是#{}  不是el表达式  -->
        </insert>
    </mapper>

    junit测试

        @Test
        public void insert(){
            TUser tu=new TUser();
            tu.setId(1);
            tu.setUserName("赵六");
            tu.setPassword("123456");
            int s=ss.insert("com.maya.dao.TUserMapper.add", tu);
            System.out.println(s);
        }
        

    打印结果如下:

    数据库中的结果如下

    删除:

    <?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.maya.dao.TUserMapper">
        <delete id="delete" parameterType="int">
            delete t_user where id=#{id}
        </delete>
    </mapper>

    junit测试:

        @Test
        public void delete(){
            int s=ss.insert("com.maya.dao.TUserMapper.delete", 1);
            System.out.println(s);
        }

    数据库中id为1的数据已经没了

    改:

    <?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.maya.dao.TUserMapper">
        <update id="update" parameterType="tUser">
            update t_user set username=#{userName},password=#{password} where id=#{id}
        </update>    
    </mapper>

    junit测试

        @Test
        public void update(){
            TUser tu=new TUser();
            tu.setId(4);
            tu.setUserName("赵六");
            tu.setPassword("123456");
            ss.update("com.maya.dao.TUserMapper.update", tu);
        }

    十分抱歉,最后这个应该是没错的,电脑上的数据库突然崩了,没法查看  但是我感觉应该是没有错了的

  • 相关阅读:
    像Google Play一样让DrawerLayout拉出的抽屉在透明系统状态栏和工具栏(ToolBar)之间。
    WebView中实现延迟加载,图片点击时才加载。
    MediaPlayer配合SurfaceView或TextureView做视频播放器时的截图方法。
    解决Fragment中使用ViewPager时,ViewPager里的Fragment错位和空白问题。
    使用SAE的Storage来为Android应用提供版本更新的检查和下载功能
    使用SAE的服务来实现android端的用户反馈功能。
    使用IntentService给自己的Android应用写一个文件下载器。
    禁止进入Activity时NumberPicker自动弹出输入法。
    使用Android系统提供的DownloadManager来下载文件。
    Android异步下载图片的类和缓存图片到SD卡的类。
  • 原文地址:https://www.cnblogs.com/zhaotiancheng/p/6736587.html
Copyright © 2011-2022 走看看