前言
上一篇文章介绍了xml文件映射SQL语句,即User user = (User) sqlSession.selectOne("cn.ddnd.www.Entity.User.getUser", "xue8@qq.com")
,但是这种方式过于繁杂,所以我们本篇介绍使用注解和SQL语句返回值的接口(如:IUser.class),即可实现xml配置文件的功能。
新建工程
将工程新建成和上篇的一样Mybatis实现数据库操作,即把上篇的内容搬过来。
修改成用注解方式
可以删除
cn.ddnd.www.Entity
包下的User.xml
,去掉Mybatis-config.xml
的如下代码。因为此时User.xml
已经没用了。1
2
3<mappers>
<mapper resource="cn/ddnd/www/Entity/User.xml"></mapper>
</mappers>新建
cn.ddnd.www.Dao
包,并且建立IUser
接口和方法。
IUser.java:1
2
3
4
5
6
7
8
9package cn.ddnd.www.Dao;
import cn.ddnd.www.Entity.User;
import org.apache.ibatis.annotations.Select;
public interface IUser {
@Select("select * from user where email = #{email}")
public User getUser(String email);
}修改测试类,即增加了
sqlSessionFactory.getConfiguration().addMapper(IUser.class);
,作用是注册SQL语句映射的接口,去掉User user = (User) sqlSession.selectOne("cn.ddnd.www.Entity.User.getUser", "xue8@qq.com");
,增加IUser IUser = (IUser) sqlSession.getMapper(IUser.class); User user = IUser.getUser("xue8@qq.com");
即可。
text.java:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42import cn.ddnd.www.Dao.IUser;
import cn.ddnd.www.Entity.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.apache.ibatis.io.Resources;
import java.io.Reader;
import java.io.IOException;
public class test {
private static Reader reader;
private static SqlSessionFactory sqlSessionFactory;
static{
try{
reader = Resources.getResourceAsReader("Mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
// 注册SQL语句映射的接口
sqlSessionFactory.getConfiguration().addMapper(IUser.class);
}catch (IOException e){
e.printStackTrace();
}
}
@Test
public void a() throws IOException {
SqlSession sqlSession = sqlSessionFactory.openSession();
try{
// User user = (User) sqlSession.selectOne("cn.ddnd.www.Entity.User.getUser", "xue8@qq.com");
// IUser.class只是个接口 Mybatis面向接口编程 只写接口 不用写接口的实现类 Mybatis帮我们去写实现类了!
IUser IUser = (IUser) sqlSession.getMapper(IUser.class);
User user = IUser.getUser("xue8@qq.com");
System.out.println("用户的邮箱是:" + user.getEmail() + ",用户的名称是:" + user.getName() + ",用户的密码是:" + user.getPassword());
}finally {
sqlSession.close();
}
}
}
项目结构
运行结果
运行测试类