学到今天发现Maper主要有两种一种是mapper.xml还有一种就是mapper.interface
大多数用的都是mapper.xml来进行操作
第一种mapper.xml文件中首先要定义的就是该mapper的namespace属性,类似于id一样,就是标识他唯一,之后就可以定义其中的许多标签比如select,delete等等,
一般普通的都具有id,parameterType等属性id就是一般的标识唯一,parameterType就是标识的参数类型
但是当是select标签的时候就会有返回类型,这之后又有两种了,一种是resultType就是简单的可以直接写出来的对象,另一种就是resultMap,这种返回的其实也是一个对象,但是可以对其进行映射
第二种mapper.interface,这就是一个接口,实现起来比mapper.xml要简单一些,只需要重载该接口中的insert,delete等方法即可
接下来就是两者在conf.xml文件中的配置了,也是今天困扰我很久的一个问题
如果是interface文件,配置起来就如下:
<mappers> <!-- 注册UserMapper映射接口--> <mapper class="me.gacl.mapping.UserMapperI"/> </mappers>
就类似于直接写出文件
二是xml文件是,配置起来就是这样的:
<mappers> <!-- 注册userMapper.xml文件, userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml--> <mapper resource="me/gacl/mapping/userMapper.xml"/> </mappers>
可以明显看出来配置的就像一个路径
这就是两者的配置区别
之后就是两者在实际测试方法整的不同
这里作者直接贴代码了
xml文件如下:
import java.util.List; import org.apache.ibatis.session.SqlSession; import me.gacl.domain.User; import me.gacl.util.MyBatisUtil; public class TestCRUDByXmlMapper { public static void testAdd() { SqlSession sqlSession=MyBatisUtil.getSqlSession(true); String statement="me.gacl.mapping.userMapper.addUser"; User user=new User(); user.setName("用户孤傲苍狼"); user.setAge(20); int retResult=sqlSession.insert(statement, user); sqlSession.close(); System.out.println(retResult); } public static void testUpdate() { SqlSession sqlSession=MyBatisUtil.getSqlSession(true); String statement="me.gacl.mapping.userMapper.updateUser"; User user=new User(); user.setId(3); user.setName("孤傲苍狼"); user.setAge(25); int retResult=sqlSession.update(statement, user); sqlSession.close(); System.out.println(retResult); } public static void testDelete() { SqlSession sqlSession=MyBatisUtil.getSqlSession(true); String statement="me.gacl.mapping.userMapper.deleteUser"; int retResult=sqlSession.delete(statement, 5); sqlSession.close(); System.out.println(retResult); } public static void testGetAll() { SqlSession sqlSession=MyBatisUtil.getSqlSession(true);; String statement="me.gacl.mapping.userMapper.getAllUsers"; List<User>lstUsers=sqlSession.selectList(statement); sqlSession.close(); System.out.println(lstUsers); } public static void main(String[] args) { testAdd(); System.out.println("------------------------"); testDelete(); System.out.println("------------------------"); testGetAll(); System.out.println("------------------------"); testUpdate(); } }
interface文件如下:
import java.util.List; import org.apache.ibatis.session.SqlSession; import me.gacl.domain.User; import me.gacl.mapping.UserMapperI; import me.gacl.util.MyBatisUtil; public class TestCRUDByAnnotationMapper { public static void testAdd() { SqlSession sqlSession=MyBatisUtil.getSqlSession(true); UserMapperI mapper=sqlSession.getMapper(UserMapperI.class); User user=new User(); user.setName("nihaohoa"); user.setAge(20); int add=mapper.add(user); sqlSession.close(); System.out.println(add); } public static void testUpdate(){ SqlSession sqlSession = MyBatisUtil.getSqlSession(true); //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class); User user = new User(); user.setId(3); user.setName("孤傲苍狼_xdp"); user.setAge(26); //执行修改操作 int retResult = mapper.update(user); //使用SqlSession执行完SQL之后需要关闭SqlSession sqlSession.close(); System.out.println(retResult); } public static void testDelete(){ SqlSession sqlSession = MyBatisUtil.getSqlSession(true); //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class); //执行删除操作 int retResult = mapper.deleteById(7); //使用SqlSession执行完SQL之后需要关闭SqlSession sqlSession.close(); System.out.println(retResult); } public static void testGetUser(){ SqlSession sqlSession = MyBatisUtil.getSqlSession(); //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class); //执行查询操作,将查询结果自动封装成User返回 User user = mapper.getById(8); //使用SqlSession执行完SQL之后需要关闭SqlSession sqlSession.close(); System.out.println(user); } public static void testGetAll(){ SqlSession sqlSession = MyBatisUtil.getSqlSession(); //得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来 UserMapperI mapper = sqlSession.getMapper(UserMapperI.class); //执行查询操作,将查询结果自动封装成List<User>返回 List<User> lstUsers = mapper.getAll(); //使用SqlSession执行完SQL之后需要关闭SqlSession sqlSession.close(); System.out.println(lstUsers); } public static void main(String[] args) { testAdd(); System.out.println("----------------------------"); testDelete(); System.out.println("----------------------------"); testGetAll(); System.out.println("----------------------------"); testGetUser(); System.out.println("----------------------------"); testUpdate(); } }
也是刚学,如果有错,希望指正!!