mybatis学习-----day02配置文件的比较

1.没有配置properties文件的时候
  其中mapper中的class指定的时候接口注解的方式使用,在接口的方法上一行添加注解然后注解里面写sql语句

<?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">
<!--1 导入mybatis-config dtd -->
<configuration>
    <!--2 配置环境  -->
    <environments default="dev">
        <!--3 具体环境的配置 -->
        <environment id="dev">
            <!--4 事务的配置,指定类型为jdbc (里面没有内容的话可以直接来/结束标志符)-->
            <transactionManager type="JDBC"/>
            <!--5 设置数据源  指定类型为数据池POOLED-->
            <dataSource type="POOLED">
                <!--6 设置属性 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="wgz"/>
            </dataSource>
        </environment>
    </environments>
    <!--7 注册映射文件 -->
    <mappers>
        <mapper class="com.hx.mybatis.dao.UserDao"/>
    </mappers>
</configuration>


  下面是接口注释的方式

public interface UserDao {
    @Insert("insert into t_user(id,username,password,nickname,email) values(null,#{username},#{password},#{nickname},#{email})")
    int add(User user);
    
    @Delete("delete from t_user where id=#{id}")
    int delete(int id);
    
    @Update("update t_user set username=#{username},password=#{password},nickname=#{nickname},email=#{email} where id=${id}")
    int update(User user);
    
    @Select("select * from t_user where id=#{id}")
    User load(int id);
    
    @Select("select * from t_user")
    List<User> listUser();
}

2.在配置了properties文件后的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">
<!--1 导入mybatis-config dtd -->
<configuration>
    <properties resource="jdbc.properties"/>
    <!-- 配置别名 -->
    <typeAliases>
        <typeAlias type="com.hx.mybatis.pojo.User" alias="User"/>
    </typeAliases>
    <!--2 配置环境  -->
    <environments default="dev">
        <!--3 具体环境的配置 -->
        <environment id="dev">
            <!--4 事务的配置,指定类型为jdbc (里面没有内容的话可以直接来/结束标志符)-->
            <transactionManager type="JDBC"/>
            <!--5 设置数据源  指定类型为数据池POOLED-->
            <dataSource type="POOLED">
                <!--6 设置属性 -->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--7 注册映射文件 -->
    <mappers>
        <mapper resource="com/hx/mybatis/pojo/userMapper.xml"/>
    </mappers>
</configuration>


其中mapper中resouce指定的是userMapper文件,这样可以在接口上使用注解,也可以在userMapper.xml文件中编写我们的sql方法,但是不使用注解的方式的时候,接口的抽象方法名字一定要与userMapper.xml中的sql方法的id属性相同
     jdbc.xml配置文件
 

 jdbc.driver=com.mysql.jdbc.Driver
  jdbc.url=jdbc:mysql://localhost:3306/db_mybatis
  jdbc.username=root
  jdbc.password=wgz


3.userMapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!--1 引入dtd -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
    
<!-- 2 设置实体命名空间 -->
<mapper namespace="com.hx.mybatis.dao.UserDao">
    <!-- 3.构建sql语句 id  parameterType  resultType -->
    
    <!-- 增加 -->
    <insert id="add" parameterType="User">
        insert into t_user(id,username,password,nickname,email)
        value(null,#{username},#{password},#{nickname},#{email})
    </insert>
    <!-- 删除 -->
    <delete id="delete" parameterType="int">
        delete from t_user 
        where id=#{id} 
    </delete>
    <!-- 修改 -->
    <!-- <update id="update" parameterType="User">
        update t_user set username=#{username},password=#{password},nickname=#{nickname},email=#{email}
        where id=#{id}
    </update> -->
    <!-- 查询 -->
    <select id="load" parameterType="java.lang.Integer" resultType="User">
        select * from t_user
        where id =#{id}
    </select>
    <!-- 查询 所有-->
    <select id="listUser" parameterType="java.lang.Integer" resultType="User">
        select * from t_user
    </select>
    <!-- 最后到mybatis里面注册映射文件 -->
</mapper>


在第二步中命名空间的时候如果没有接口的方式;
那么命名空间指定的就是实体类的具体路径(例如:com.hx.mybatis.pojo.User),其中User为User实体类
如果使用的是接口命名空间的方式的时候,指定到接口的类的具体路径(例如:com.hx.mybatis.dao.UserDao),其中UserDao为接口类的。
不使用接口和使用接口命名空间的区别,不使用接口的时候,比如在使用session.insert()方法的的时候,
    只能在方法里面写明两个参数中前面一个参数指定调用方法的具体路径(例如:com.hx.mybatis.pojo.User.add),add就是添加方法。
但是使用接口的方法的时候调用sql方法的时候可以session.getMapper(UserDao.class).functionName(); 其中UserDao为接口类,用反射的方式找到这个方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值