1 所谓的注解版,个人理解为 XXXMapper.xml文件省略掉,把需要的各种sql语句写入到了 XXXMapper接口中
如何让 主配置文件找到 接口呢,只需把 下面
<mapper resource="com/model/UserMapper.xml" />
改为
<mapper class="com.model.UserMapper" />
即可,看属性也知道,把资源文件改为了类文件的含义
2 下面是完整主配置文件
<?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="db.properties"></properties>
<typeAliases>
<!-- 为实体指定别名 如果不想取别名后面就必须使用全名 这里就是给类名做一个映射而已 -->
<typeAlias alias="user" type="com.model.User" />
</typeAliases>
<environments default="development">
<!-- 配置多个数据库连接环境这里和 db.properties对应 -->
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!--mappers其实就是JAVABEAN对应发XML文件的映射 -->
<mappers>
<!-- <mapper resource="com/model/UserMapper.xml" /> -->
<mapper class="com.model.UserMapper" />
</mappers>
</configuration>
3 下面是要更改的 Mapper接口
package com.model;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
public interface UserMapper {
@Select("select * from wj_user where id=#{id}")
User getUser(int id);
@Update("insert into wj_user (name,sex) value( #{name},#{sex})")
void insertUser(User user);
}
3 下面是测试类 (执行了两个方法 查询和插入)
package com.model;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class BatisTest {
public static void main(String[] args) {
InputStream input;
try {
input = Resources.getResourceAsStream("mybiatis-config.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(input);
// SqlSessionFactoryBuilder 是用过即丢,其生命周期只存在于方法体内
SqlSession mySession= sqlSessionFactory.openSession();
UserMapper userMapper = mySession.getMapper(UserMapper.class);
User user = userMapper.getUser(1);
// User user= mySession.selectOne("selectOne",1);
//这里读取出来之后 会自动和你javabean的属性进行映射起来
System.out.println(user.getName());
User userI = new User();
userI.setName("doc");
userI.setSex("hello");
userMapper.insertUser(userI);
mySession.commit();
mySession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4 查看执行结果 已经插入了新数据