这次是基于注解的,注解和xml配置有很大不同。
一、代码实现
(1)xml是写sql配置文件,而配置文件是写个接口类
并且在这个接口类中就定义好sql注释。
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 |
package testcrud; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import test.miss; public interface missmapper { @Insert(" insert into miss(name,age) values(#{name},#{age}) ") public int add(miss miss); @Delete(" delete from miss where id = #{id} ") public int delete(int id); @Update(" update miss set name = #{name},age = #{age} where id = #{id} ") public int update(miss miss); @Select(" select * from miss where id = #{id} ") public miss select(int id); @Select(" select * from miss ") public List<miss> getall(); } |
(2)在mybatis配置文件conf.xml中注册这个接口类
注意是类,所以要加的是类的位置。
1 2 3 4 5 6 |
<!-- 注册mapper --> <mappers> <mapper resource="mapper.xml" /> <mapper resource="testcrud/mapper.xml"/> <mapper class="testcrud.missmapper"/> </mappers> |
(3)写实现方法
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
package testcrud; import java.io.InputStream; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import test.miss; public class testannotation { public static SqlSessionFactory getFactory() { String resource = "conf.xml"; InputStream inputStream = testxml.class.getClassLoader().getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream); return factory; } public void testAdd() { SqlSession sqlSession = getFactory().openSession(true); missmapper missmapper = sqlSession.getMapper(missmapper.class); miss miss = new miss(); miss.setName("xie"); miss.setAge(18); int add = missmapper.add(miss); System.out.println(add); } public void testDelete() { SqlSession sqlSession = getFactory().openSession(true); missmapper missmapper = sqlSession.getMapper(missmapper.class); int delete = missmapper.delete(12); System.out.println(delete); } public void testUpdate() { SqlSession sqlSession = getFactory().openSession(true); missmapper missmapper = sqlSession.getMapper(missmapper.class); miss miss = new miss(); miss.setId(13); miss.setName("yxinnnn"); miss.setAge(520); int update = missmapper.update(miss); System.out.println(update); } @Test public void testselect1() { SqlSession sqlSession = getFactory().openSession(true); missmapper missmapper = sqlSession.getMapper(missmapper.class); miss miss = missmapper.select(1); System.out.println(miss.toString()); } @Test public void testselect2() { SqlSession sqlSession = getFactory().openSession(true); missmapper missmapper = sqlSession.getMapper(missmapper.class); List<miss> list = missmapper.getall(); System.out.println(list.toString()); } } |
注意,这里换了一个方法为:
1 |
sqlSession.getMapper(missmapper.class) |
即接口类地址。
运行成功。
二、总结
还是比较简单的,感觉比使用xml配置更简单易懂。