Mybatis框架入门使用教程
2019-08-20 本文已影响0人
0小水瓶0
Mybatis框架是一种轻量级操作数据库的基本框架,其高度的封装只需要使用者将sql语句、传值与取值处理好就可以轻松的操作数据库。
1.导入jar包
该框架是一个轻量级的框架其只需要导入两个jar包。 jar包2.编写配置文件
需要在scr文件夹里创建一个mybatis.cfg.xml文件,该文件主要是配置数据库的一些链接,账号和密码。在<mappers>标签里引用编写sql语句的XML文件。这样在程序加载的时候就可以读取到sql的xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 选择默认的连接方式 -->
<environments default="myb">
<environment id="myb">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/testdemo?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="entity/sInfoMapper.xml"/>
<mapper resource="entity/tInfoMapper.xml"/>
</mappers>
</configuration>
3.编写sql XML文件
在实体类的包里面创建编写sql的XML文件,在其中需要在<mapper>标签中指定需要操作增删改查的实体类的地址,和在里面编写sql语句。
<?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="entity.sInfo">
<insert id="sadd" parameterType="entity.sInfo">
insert into sinfo(sname,sage,ssex) values(#{sname},#{sage},#{ssex})
</insert>
<delete id="sdelete" parameterType="Integer">
DELETE FROM sinfo WHERE id=#{id}
</delete>
<update id="supdate" parameterType="entity.sInfo">
UPDATE sinfo SET sage=#{sage},ssex=#{ssex} WHERE id=#{id}
</update>
<select id="sselectOne" parameterType="entity.sInfo" resultType="entity.sInfo">
select * from sinfo where id=#{id}
</select>
<select id="sselectAll" parameterType="Integer" resultType="entity.sInfo">
select * from sinfo limit #{f},5
</select>
<select id="scount" resultType="Integer">
select count(1) from sinfo
</select>
</mapper>
以添加为例,在<insert>标签里面给一个id取一个名(相当于方法名),parameterType参数可以指定传过来的参数类型,还有一个resultType参数是指定返回值的参数类型,将这些标签看成方法,形参和返回值就可以很轻松的理解。
<insert id="sadd" parameterType="entity.sInfo">
insert into sinfo(sname,sage,ssex) values(#{sname},#{sage},#{ssex})
</insert>
4.工具类
该工具类是提供SqlSession类,该类提供一系列操作数据库的方法。
package utils;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class mybatisutil {
public static SqlSession getsession(){
SqlSession session=null;
try {
Reader r=Resources.getResourceAsReader("mybatis.cfg.xml");
SqlSessionFactoryBuilder sfb=new SqlSessionFactoryBuilder();
SqlSessionFactory sf=sfb.build(r);
session = sf.openSession();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return session;
}
}
5.dao层代码
这里值的注意的就是session里面引入的地址和传递的数据类型。增删改都需要在后面提交事务,而查询并不需要这样操作。
package dao.Impl;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import dao.sInfoDao;
import entity.sInfo;
import utils.mybatisutil;
public class sInfoDaoImpl implements sInfoDao{
SqlSession session=null;
@Override
public Integer sadd(sInfo s) {
session=mybatisutil.getsession();
Integer a=session.insert("entity.sInfo.sadd", s);
session.commit();
session.close();
return a;
}
@Override
public Integer sdelete(Integer id) {
session=mybatisutil.getsession();
Integer a=session.delete("entity.sInfo.sdelete", id);
session.commit();
session.close();
return a;
}
@Override
public Integer supdate(sInfo s) {
session=mybatisutil.getsession();
Integer a=session.update("entity.sInfo.supdate", s);
session.commit();
session.close();
return a;
}
@Override
public sInfo sselectOne(sInfo s) {
session=mybatisutil.getsession();
sInfo ss=session.selectOne("entity.sInfo.sselectOne", s);
session.commit();
session.close();
return ss;
}
@Override
public List<sInfo> sselectAll(Integer page) {
int f=(page-1)*5;
session=mybatisutil.getsession();
List<sInfo> list=session.selectList("entity.sInfo.sselectAll",f);
session.commit();
session.close();
return list;
}
@Override
public Integer sCount() {
session=mybatisutil.getsession();
List list=session.selectList("entity.sInfo.scount");
System.out.println("list="+list);
session.commit();
session.close();
return (Integer)list.get(0);
}
}