MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
笔者今天搭了一个mybatis的demo 玩了下 结构如下图所示 resource下放一些配置文件 dao下放映射器文件 entity放实体文件 也就是数据库要注入对象的想关的类
首先既然是和数据库相关 我们在mysql 上新建一张student 表
其次我们要写配置文件mybatis_cfg.xml 以生成SeqSessonFactory
<?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> <properties resource="resource/jdbc.properties"/> <typeAliases> <!--<typeAlias type="entity.Student"/>--> <package name="entity"/>//数据库要注入的对象放在entity内 </typeAliases> <environments default="mybatis-demo"> <environment id="mybatis-demo"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <package name="dao"/> </mappers>
jdbc.properties:存放url driver 用户名和密码
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mysql_demo jdbc.username=root jdbc.password=root下面我们来写映射器,映射器有接口和对应的xml 文件组成
我们这里拿StudentMapper 举例 这里
public interface StudentMapper { int insertStudent(Student student) throws Exception; Student selectOneById(int id) throws Exception; List<Student> selectAllstudent() throws Exception; }
对应的StudentMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="dao.StudentMapper"> <resultMap id="studentMapper" type="entity.Student"> <id column="sid" property="id"/> <result property="name" column="Sname"/> <result property="sex" column="Ssex"/> <result property="tid" column="Tid"/> <result property="age" column="SageNum"/> </resultMap> <insert id="insertStudent" parameterType="entity.Student"> INSERT into student (sid,sname,ssex,tid,sagenum) VALUES (#{id},#{name},#{sex},#{tid},#{age}) </insert> </mapper>映射器写好了 我们就可以测试:
新建Main 类作为测试类
import dao.StudentMapper; import entity.Student; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.InputStream; public class Main { public static void main(String[] args) throws Exception{ InputStream in=Main.class.getResourceAsStream("resource/mybatis_cfg.xml"); SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);//构建SqlSessionFactory SqlSession session=factory.openSession();//得到SqlSession StudentMapper mapper=session.getMapper(StudentMapper.class); Student student=new Student(1,"老张","男",12,12); mapper.insertStudent(student) ; session.commit(); session.close(); } }运行你会发现student多了 这天记录