Mybatis总结

MyBatis框架:

原本是apache的开源项目iBatis,后来过度给了谷歌了,更名为MyBatis.
1.持久化的框架.Hibernate,内容过于庞大,学习成本高
2.方言,hql,最后还是被转换成sql,但是不灵活。mybatis和jdbc类似,就是书写sql语句.
3.所以mybatis的执行效率,略高
4.mybatis代码结构类似与jdbc,学习(上手)容易
5.sql语句和代码分离,更加符合面向对象的分层思想.

一、基本CRUD

1.加入jar包
mybatis-3.3.2.jar
2.src下加入数据库相关的配置文件
mybatis-config.xml
3.实体类(1.手写2.逆向工程(配置插件aa))
4.存放sql语句的文件.DeptMapper.xml
可以配置多个数据库
ThreadLocal aa

案例:

Mybatis_test1

步骤:
1>mybatis-config.xml
















2> DeptMapper.xml



insert into dept
(deptno,dname,loc)
values
(#{deptno},#{dname},#{loc})


delete from dept where deptno=#{deptno}


update dept set dname=#{dname},loc=#{loc}
where deptno=#{deptno}



select * from dept order by deptno desc

3>封装MySqlSession类,获得SqlSession对象

public class MySqlSession {
static InputStream in;
static SqlSessionFactory sf;
// ThreadLocal==妈妈的钱包
static {
try {
in = Resources.getResourceAsStream(“mybatis-config.xml”);
// 加载mybatis-config.xml
sf = new SqlSessionFactoryBuilder().build(in);
// 创建SqlSessionFactory工厂
} catch (IOException e) {
e.printStackTrace();
}
}

public static SqlSession getSession() {
// 获得SqlSession对象
return sf.openSession();
}

}

4> DeptDao.java

//查询
public static void test1() {
List list = getSession().selectList(“crud.cha”);
// selectList(“crud.cha”)查询,crud.cha类名全路径,参数为id值。
for (Dept d : list) {
System.out.println(d.getDeptno() + “\t” + d.getDname() + “\t” + d.getLoc());
}
}

//添加
public static void test2(Dept d) {
SqlSession se = getSession();
// insert(“crud.tian”, d)添加,参数一为id,参数二为对象
se.insert(“crud.tian”, d);
// 需要事务支持
se.commit();
}

//修改
public static void test3(Dept d) {
SqlSession se = getSession();
// update(“crud.gai”, d) 修改
se.update(“crud.gai”, d);
se.commit();
}

//删除
public static void test4(int deptno) {
SqlSession se = getSession();
/*
* delete(“crud.shan”, deptno)
* 删除参数一为id,参数二为表的id
*/
se.delete(“crud.shan”, deptno);
se.commit();
}

二、resultMap标签
如果表中的字段(列)名称和java实体类属性的名称发生不一致.就需要这个标签来标注

Mybatis_test2

DeptMapper.xml:










insert into dept
(deptno,dname,loc)
values
(#{sundeptno},#{sundname},#{sunloc})




select * from dept order by deptno

DeptDao.java:

public static void test1() {
List list = getSession().selectList(“crud.cha”);
for (Dept d : list) {
// d.getSundeptno() 通过Dept对象的get方法取值
System.out.println(d.getSundeptno() + “\t” + d.getSundname() + “\t” + d.getSunloc());
}
}

三、sql标签
重复的sql语句片段,永远都会出现(包含重复的sql语句)

Mybatis_test3

DeptMapper.xml:



select * from dept order by deptno



desc

四、sql语句作为变量传入
内容当参数传入

Mybatis_test4

DeptMapper.xml:


select * from dept order by deptno ${x}

DeptDao.java:

public static void test1() {
Map

{id}


DeptDao.java:

public static void test1() {
Map

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值