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为接口类,用反射的方式找到这个方法。