Mybatis学习二 (接口注解)
1.概述
执行SQL的方式:
第一种:
用 SqlSession
实例来直接执行在User.xml
文件中映射的 SQL 语句
session.selectOne("com.yiibai.mybatis.models.UserMapper.getUserByID", 1)
第二种:
使用合理描述参数和SQL语句返回值的接口(比如:IUser.class
),
这样现在就可以不使用类似User.xml
配置文件,至此更简单,代码更安全,
不容易发生的字符串文字和转换的错误
2.使用接口
第一步:创建一个接口:IUser,并在其中声明对应的操作方法
import org.apache.ibatis.annotations.Select;
import com.yiibai.mybatis.models.User;
public interface IUser {
@Select("select * from user where id= #{id}")
public User getUserByID(int id);
}
注:代码有一个方法名 getUserByID
必须与 User.xml
里面配置的
select
的 id
对应(<select id="getUserByID">
)同名,虽使用注解映射不需要User.xml
。
第二步:创建对应映射接口 SQL 语句
配置 MyBatis 所需的数据连接文件,这里创建一个文件: src/config/Configure.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">
<configuration>
<typeAliases>
<typeAlias alias="User" type="com.yiibai.mybatis.models.User" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/testdb" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- // power by http://www.yiibai.com 注释掉咯...
<mapper resource="com/yiibai/mybatis/models/User.xml" />-->
</mappers>
</configuration>
创建一个User.java
类文件
public class User {
private String name;
private String dept;
private String phone;
private String website;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.yiibai.mybatis.dao.IUser;
import com.yiibai.mybatis.models.User;
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
reader = Resources.getResourceAsReader("config/Configure.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
sqlSessionFactory.getConfiguration().addMapper(IUser.class);
} catch (Exception e) {
e.printStackTrace();
}
}
return sqlSessionFactory;
}
SqlSession session = sqlSessionFactory.openSession();
try {
IUser iuser = session.getMapper(IUser.class);
User user = iuser.getUserByID(1);
System.out.println("名字:"+user.getName());
System.out.println("所属部门:"+user.getDept());
System.out.println("主页:"+user.getWebsite());
} finally {
session.close();
}
}
}