MyBatis的一些小問題

1.ResultType與ResultMap的區別

  • 如果你的返回結果只有一個值比如String,int什麽的用ResultType就行。
  • 如果返回的是一個較複雜的對象那麼用ResultMap比较有优势。
  • 當然ResultType也可以直接返回對象,但是要滿足某些條件:1.數據庫字段和你定義的實體類的屬性名必須一樣否則返回null,2.你不能單獨定義想要的返回值。
  • ResultMap在複雜些的查詢中是很有用的。


例子:

實體類


數據庫


在這裡爲了測試把數據庫中的age字段改成了ages,也就是與實體類中的不一樣了。



接下來是映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sin.dao.StudentDao">
	
	<resultMap type="Student" id="student_map">
		<id property="id" column="id"/>
		<result property="age" column="ages"/>
		<result property="sex" column="sex"/>
	</resultMap>
	
	<insert id="insert" parameterType="Student">
			insert into student(name,age,sex,clazz_id) values(#{name},#{age},#{sex},#{clazzId})
	</insert>
	<select id="select" resultType="Student" parameterType="int">
		select * from student where id=#{id}
	</select>
	<select id="selectMap" resultMap="student_map" parameterType="int">
		select * from student where id=#{id}
	</select>
	
<!-- 	<select id="find" resultMap="" > -->
<!-- 	</select> -->
</mapper>

接口文件

public interface StudentDao {
	
	public void insert (Student student);
	
	public Student select(int id);
	
	public Student selectMap(int id);
	
	public List<Student> find(String sort, String dir, int start, int limit);
}

開始測試

當執行下面代碼時

@Test
	public void testSelect () {
		Student student = studentDao.select(1);
		System.out.println(student.getName());
		System.out.println(student.getAge());
	}
執行結果是:zhangsan

null



當執行

@Test
	public void testSelectMap () {
		Student student = studentDao.selectMap(1);
		System.out.println(student.getName());
		System.out.println(student.getAge());
	}
結果是:zhangsan

11



怎样使用基于注解的sql映射

注意:注解确实可以简化开发,有人喜欢也有人不喜欢,mybatis的这个注解貌似功能不是很好所以要写复杂的sql还是xml吧


接口StudentDao 文件

@Insert("insert into student (name,age,sex,clazz_id) values(#{name},#{age},#{sex},#{clazzId})")
public void insert (Student student);

测试文件

	@Before
	public void init() {
		SqlMapUtils.getInstance().getConfiguration().addMapper(StudentDao2.class);//这里记得要写addMapper
		studentDao2 = sqlSession.getMapper(StudentDao2.class);
	}

	/**
	 * 测试基于注解的sql语句
	 */
	@Test
	public void testSelect4Annotation () {
		Student student = new Student();
		student.setAge(11);
		student.setName("zhangsan");
		student.setSex(true);
		student.setClazzId(1);
		studentDao2.insert(student);
		sqlSession.commit();
	}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值