一、Mybatis
mybatis是一个基于Java的持久层框架。它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
Mybatis是一个半自动框架,它避免了原生的JDBC代码,不用像JDBC代码一样封装对象,避免了大量重复代码。解除sql与程序代码的耦合。
二、使用mybatis的准备
1.需要的jar包
ant-1.9.6.jar
ant-launcher-1.9.6.jar
asm-5.2.jar
cglib-3.2.5.jar
commons-logging-1.2.jar
javassist-3.22.0-GA.jar
log4j-1.2.17.jar
log4j-api-2.3.jar
log4j-core-2.3.jar
mybatis-3.4.6.jar(mybatis核心包)
ognl-3.1.16.jar
slf4j-api-1.7.25.jar
slf4j-log4j12-1.7.25.jar
sqljdbc4-2.0.jar(sqlserver数据库驱动包,使用mysql数据库替换对应驱动包)
mybatis下载:http://www.mybatis.cn/82.html
三、编写一个mybatis程序(以SQL server为例)
1)创建一个工程导入上述所有jar包
2)创建实体类user
package com.master;
public class User { private String u_id; private String u_name; public String getU_id() { return u_id; } public void setU_id(String u_id) { this.u_id = u_id; } public String getU_name() { return u_name; } public void setU_name(String u_name) { this.u_name = u_name; } } |
3)在src下创建mybatis配置文件mybatisconfig.xml
此处如过使用mysql只需要修改driver,ur,username,password等参数l
<?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="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> <property name="url" value="jdbc:sqlserver://127.0.0.1:1433;databaseName=test" /> <property name="username" value="sa" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!-- 引入com.master包下的User.xml Sql映射文件 --> <mappers> <mapper resource="com/master/User.xml" /> </mappers> </configuration> |
4) com.uit工具类,创建SqlSession以及获取sqlSession
public class MybatisUit { //创建SqlSessionFactory public static SqlSessionFactory getSqlSessionFactory() throws IOException{ String resource = "MybatisConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); return sqlSessionFactory; } //获取SqlSessionFactory public static SqlSession getSession() throws IOException { SqlSessionFactory ssf=getSqlSessionFactory(); return ssf.openSession(); } } |
5)在实体类包com.master下创建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="com.master.UserMapper">
<select id="selectUser" resultType="com.master.User"> select*from Users where u_id=#{id} </select> </mapper> |
6)测试
public static void main(String[] args) throws IOException { SqlSession sqlsession=MybatisUit.getSession(); //selectOne第一个参数是sql语句配置文件的mapper的namespace+select的id //第二个参数为sql语句的参数 User user=sqlsession.selectOne("com.master.UserMapper.selectUser", 0001); System.out.println("id= "+user.getU_id()+" ,name = "+user.getU_name()); sqlsession.close(); } |
运行: