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);
    }

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

 

posted @ 2017-04-19 23:55  赵天成123  阅读(4373)  评论(1编辑  收藏  举报