MyBatis学习笔记-1

MyBatis与jpa的比较:

mybatis的优势在于SQL的自由度上,SQL优化和返回对象的大小都是可控的。spring-data-JPA则在开发效率上有优势。

mybatis在springboot中开启驼峰式命名:

mybatis.configuration.map-underscore-to-camel-case=true

MyBatis的映射:

普通映射

@Select("select * from mybatis_Student where id=#{id}")

public Student getStudent(int id);

@Insert("insert into mybatis_Student (name, age, remark, pic,grade_id,address_id) values (#{name},#{age},#{remark}, #{pic},#{grade.id},#{address.id})")

public int insert(Student student);

@Update("update mybatis_Student set name=#{name},age=#{age} where id=#{id}")

public int update(Student student);

@Delete("delete from mybatis_Student where id=#{id}")

public int delete(int id)

结果集映射

@Select("select * from mybatis_Student")

@Results({

@Result(id=true,property="id",column="id"),

@Result(property="name",column="name"),

@Result(property="age",column="age")

})

public List<Student> getAllStudents();

关系映射

a.一对一

@Select("select * from mybatis_Student")

@Results({

@Result(id=true,property="id",column="id"),

@Result(property="name",column="name"),

@Result(property="age",column="age"),

@Result(property="address",column="address_id",one=@One(select="com.skymr.mybatis.mappers.AddressMapper.getAddress"))

})

public List<Student> getAllStudents();

b.一对多

@Select("select * from mybatis_grade where id=#{id}")

@Results({

@Result(id=true,column="id",property="id"),

@Result(column="grade_name",property="gradeName"),

@Result(property="students",column="id",many=@Many(select="com.skymr.mybatis.mappers.Student2Mapper.getStudentsByGradeId"))

})

public Grade getGrade(int id);

利用@Provider实现动态SQL

猜你喜欢

转载自blog.csdn.net/fall_hat/article/details/83112975