MyBatis学习随笔

        MyBatis是一个优秀的持久层框架,它主要是完成对操作数据库的过程进行封装。它以xml或注解的方式将要执行的各种statement配置起来,并通过Java对象和statement中的sql进行映射生成最终执行的sql语句,最后让mybatis框架进行sql并将结果映射成Java对象并返回。

        其中在mybatis的配置文件以及dao层的配置文件需要认真对待,在mybatis的配置文件中需要完成数据库连接的路劲及配置信息,并配置好mapper映射关系的文件路径,例如:


         在dao层的xml文件中,我们需要设置好dao接口的路径,在xml文件中编写我们的sql功能语句,即相应的增删改查。

        其中需要注意的地方有resultTyperesultMap的用法,resultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。 如果sql查询到的字段与pojo的属性名不一致,则需要使用resultMap将字段名和属性名对应起来,进行手动配置封装,将结果映射到pojo中,resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

        在sql语句中的#或$用于接收dao接口传递的参数,其中#是以注入的方式放入了sql语句,$是以拼接的方式放入了sql语句。


dao层mapper的xml文件:

update students set sage=#{age},sname=#{name} where

sid=#{id}

insert into students

values(#{students.sid},#{students.sage},#{students.sname})

   

update students

xuefen=#{xuefen},

sname=#{sname}

update students

xuefen=#{xuefen}

sid=#{sid}

   

id="stu">

id="ss">

ofType="model.Score">

id="so">

ofType="model.Wupin">



dao接口的写法:

public interface StudentDao {

//修改方法

int change1(@Param("id")int sid,@Param("age")int sage,@Param("name")String sname);

//通过id查询

Student queryStuById(@Param("id1")int sid);

//添加方法

int addStu1(@Param("students")Student stu);

//查询所有

List queryAllStu();

//双表查询,显示多列

List getStuWithScore();

//双表查询,显示多行

List getStuWithObj();

//传入对象数组

List getStuByAgeArray(Integer[] ages);

//传入list集合

List getStuByAgeArray2(List ages);

//传入map集合

List getStuByMap(Map map);

//修改信息(使用trim标签)

int gaifen(@Param("xuefen")String xuefen,@Param("sname")String sname,@Param("sid")String sid);

//修改信息(使用set标签)

int gaifen1(@Param("xuefen")String xuefen,@Param("sid")String sid);

//查询信息(使用choose标签)

List getStuWhen(@Param("xuefen")String xuefen,@Param("zong")String zong);

//查询信息(使用where标签)

List getStuMH(@Param("min")String min,@Param("max")String max,@Param("name")String name,@Param("xuefen")String xuefen);

}

其中的@Param是注解,方便mapper文件引用传入的参数,#{}和${}都可以使用,但是不用这个注解,使用${}会报错,此时只能用#{}。

你可能感兴趣的:(MyBatis学习随笔)