http://t.csdnimg.cn/kcPCy log4j(日志的配置)
http://t.csdnimg.cn/IWa9H mybatis的理解(上)(包括xml配置信息进行CRUD)
http://t.csdnimg.cn/weXLx mybatis的理解(中)(Mapper代理开发)
首先我们看一下项目结构
注解进行CRUD,其实和xml文件配置一样,只不过注解开发把SQL语句写到了接口上面,而xml文件配置把sql语句写到xml文件配置里面。还有一点就是在使用注解进行CRUD的时候,需要在上述结构当中的mybatis-config.xml当中,把com.dao.IUserDao映射进去。
值得注意的是,注解进行CRUD确实是方便,但是SQL语句一复杂不利于我们阅读SQL,所以为了方便注解只能进行简单的增、删、改、查,假如SQL复杂的话还是需要xml文件配置。
下面是IUserDao接口源码(进行了简单的CRUD)
package com.dao;
import com.pojo.scores;
import com.pojo.zhang;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
public interface IUserDao {
/**
* 查询所有的数据
*/
@Select("select * from scores")
List<scores> findAll();
/**
* 保存用户
*/
@Insert("insert into zhang(id,name,age) values(#{id},#{name},#{age})")
void saveUser(zhang z);
/**
*修改用户
*/
@Update("update zhang set name=#{name},age=#{age} where id=#{id}")
void updateUser(zhang z);
/**
* 根据Id查询一条记录,以JavaBean方式返回
* @param id
* @return
*/
@Select("select * from zhang where id=#{id}")
zhang selectIdMessage(Integer id);
}
然后就是实现该接口的实现类,这里我们就使用TestResult01包下的CRUDTest类进行实现。源码如下:
package TestResult01;
import com.dao.IUserDao;
import com.pojo.scores;
import com.pojo.zhang;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class CRUDTest {
private static InputStream in;
private static SqlSessionFactory build;
private static SqlSession sqlSession;
private static IUserDao userDao;
@Before
public void init() throws IOException {
//1.读取mybatis的核心配置文件
in = Resources.getResourceAsStream("config/mybatis-config.xml");
//2.通过配置信息获取一个SqlSessionFactory
build = new SqlSessionFactoryBuilder().build(in);
//3.通过工厂获取一个sqlSession对象
sqlSession = build.openSession();
userDao = sqlSession.getMapper(IUserDao.class);
}
@After
public void destroy() throws IOException {
sqlSession.commit();
sqlSession.close();
in.close();
}
@Test
public void testFindAll() {
List<scores> all = userDao.findAll();
for (scores scores : all) {
System.out.println(scores);
}
}
@Test
public void testSave(){
zhang zhang = new zhang();
zhang.setName("小梅");
zhang.setAge(20);
zhang.setId(3);
userDao.saveUser(zhang);
}
/**
* 修改数据
*/
@Test
public void TestUpdate(){
zhang zhang1 = new zhang();
zhang1.setName("小清");
zhang1.setAge(18);
zhang1.setId(3);
userDao.updateUser(zhang1);
}
@Test
public void selectIdMessage(){
zhang z = userDao.selectIdMessage(1);
System.out.println(z);
}
}