1、首先创建SQLProvider类,用来设置crud的sql语句相关的方法。
package com.qfedu.sql;
import org.apache.ibatis.jdbc.SQL;
import org.junit.Test;
/**
* Created by asus on 2020/3/16.
*/
public class SQLProvider {
public String getUsers(){
return new SQL()
.SELECT("id")
.SELECT("username","birthday")
.SELECT("sex","address")
.FROM("user")
.toString();
}
public String getUserById(){
return new SQL()
.SELECT("id")
.SELECT("username","birthday")
.SELECT("sex","address")
.FROM("user")
.WHERE("id=1")
.OR()
.WHERE("username='沙和尚'")
.toString();
}
public String saveUser(){
return new SQL()
.INSERT_INTO("user")
.VALUES("username","'zhangsan'")
.VALUES("birthday","'2020-03-12 17:35:34'")
.VALUES("sex","'n'")
.VALUES("address","'beijing'")
.toString();
}
}
在这个类中创建crud 的各种方法,并且设置它的返回值为 string ,这样我们就可以得到 sql 语句,这样写的好处也就是防止我们的sql语句写错。
2、创建IUserDao接口,并且使用注解的方式的mybatis 进行设置 sql语句
package com.qfedu.dao;
import com.qfedu.pojo.User;
import com.qfedu.sql.SQLProvider;
import org.apache.ibatis.annotations.*;
import javax.annotation.PostConstruct;
import java.util.List;
/**
* Created by asus on 2020/3/16.
*/
public interface IUserDao3 {
/*type是sql构建语言的类对象 ,method 是 类对象中的方法*/
@SelectProvider(method = "getUsers",type = SQLProvider.class)
List<User> getAllUsers();
@SelectProvider(method = "getUserById",type = SQLProvider.class)
List<User> getUserById();
@InsertProvider(method = "saveUser",type = SQLProvider.class)
/* 是否 使用主键,*/
@Options(useGeneratedKeys = true,keyProperty = "id")
int saveUsers();
}
3、最后进行测试,使用SqlSessine的 getMapper() 方法,进行创建代理对象,并且由代理对象调用 crud的 四个方法。
@Test
public void saveUser2() {
IUserDao3 udao = mSession.getMapper(IUserDao3.class);
int i = udao.saveUsers();
System.out.println(i);
}