MyBatis是一款ORM模型,支持定制化 SQL、存储过程以及高级映射。可以使用简单的 XML
注解来配置和映射 原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象) 映射成数据库中的记录。 为什么要用mybatis:为了解决JDBC中的弊端
JDBC的弊端
1.硬编码问题:SQL语句存在Java代码中,不能很好的分离数据库语句和 Java语句,造成
代码不易维护;
2.代码重复度高:大量的重复代码,以 ResultSet 为例,每次都需要重复解析结 果集;3.SQL参数固定:SQL语句的参数固定,使得SQL语句不 灵活,无法满足多变的场景;
4.底层技术:JDBC属于底层的技术,不支持 分布式,缓存等技术,对于复 杂场景的应
不好。
怎样解决呢?
1.数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题
解决 :在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。2.Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代
码。
解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。 3.向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一 一对应。 解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的 类型。 4.对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成 pojo对象 解析比较方便。 解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的 类型。 怎么使用mybatis映射器 mybatis映射器用法分为两种:一种是salmapper配置文件,另一种是注解 一.sqlmapper配置文件 1.首先创建项目并导入所需要的包2.将配置文件放入项目中
mybatis-confing.xml配置文件中代码:
3.基本包已导致完毕,下来写项目结构中的代码
1.创建实体类,一般我把实体类放在com.ape.bean这个包下
看一个实体类的例子:
public class Student {
private int sid;
private String sname;
private Date birthday;
private String ssex;
private int classid;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(int sid, String sname, Date birthday, String ssex, int classid) {
super();
this.sid = sid;
this.sname = sname;
this.birthday = birthday;
this.ssex = ssex;
this.classid = classid;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public int getClassid() {
return classid;
}
public void setClassid(int classid) {
this.classid = classid;
}
@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + ", birthday=" + birthday + ", ssex=" + ssex + ", classid="
+ classid + "]";
}
}
2.创建接口(主要写增删改查的方法)
public interface students {
//新增
public int addstudent(student s);
//修改
public int updatestudnet(student s);
//删除
public int deletestudent(int sid);
//查询
public student findstudent(int sid);
}
3.创建一个xxx.xml(主要写数据库中的SQL语句)
4.写完这写就可以在Java中对数据库的内容进行增删改查了 注意点://查询语句
(1)、接口方法名要和sqlmapper中的id值一致
(2)、接口中的入参类型要和sqlmapper中,parameterType类型一致
(3)、接口中的返回值类型要和sqlmapper中,resulType类型一致
(4)、sqlmapper中,namespace的值要指向接口的类型路径
(5)、sqlmapper和接口要在同一个包下
(6)、sqlmapper文件名和接口的类名要一致
二.注解方式 在使用注解就是将 sqlmapper配置文件中创建XXX.xml去掉不要,直接在接口中写SQL语句 其他部分不变public interface Studentmapper {
//新增
@Insert ("insert into student (sname,birthday,ssex,classid)values (#{sname},#
{birthday},#{ssex},#{classid})")
@Options(keyProperty = "sid", useGeneratedKeys = true)
public int addstudent (student s);
//修改
@Update("update student set sname=#{sname},birthday=#{birthday},ssex=#{ssex},classid=#
{classid} where sid =#{sid}")
public int updatestudent(student s);
//删除
@Delete("delete from student where sid=#{v}")
public int deletestudent(int sid);
}
以上是mybatis映射器用法,其实两种方法各有各的好处,这要根据每个人的习惯用那个决定的,
其实mybatis映射七用法挺重要的,希望大家都掌握。



