经过了之前对SSM框架的初步学习,学会了框架的简单而又基本的使用。
显然这并不够,时间长了连基础的使用也会遗忘,因此我希望结合SSM框架书籍对
这些再次学习,深入去理解以前所学的知识。
1.Mybatis是一个java技术的持久层框架,是用于对数据库的操作
持久层是什么,数据库系统就是一个持久层,将业务的数据保存到磁盘,具备长期存储的能力,
java就可以用mybatis去更好的实现对数据库,也就是持久层的操作。
2.mybatis的优点,它可以自己书写sql语句,这样的操作可以让开发者针对需求自定义查询方式,这样可以
实现sql的优化,更适合互联网开发;同时它有动态sql这样一个灵活的功能;在一个就是通过mapper代理,
可以实现一个借口和一个XML文件就可以实现一个映射器,极大提高了开发效率。
3.想要学会熟练使用mybatis,首先需要了解它的核心组件
sqlsessionfactorybuilder 构造器 根据配置或者代码去生成sqlsessionfactory
sqlsessionfactory 是一个工厂接口,用于生成相应的sqlsession
sqlsession 会话 用于发送SQL语句,并返回拿到执行结果
而在mybatis中通常使用mapper代理的方式去去替代sqlsession发送sql语句和返回结果,更加高效
1.关于sqlsessionfactory,每一个mybatis的应用都是基于此接口的实例为中心,它的唯一作用就是去
创建用于发送sql的session,对于工厂的创建普遍采取XML配置.
2.session它是mybatis的核心接口,作用类似于jdbc的connection,用于开启连接
作用:获取mapper ,发送sql ,控制数据库的事务
说道XML配置:
mybatis的XML配置分为两类,一类是基础配置 mybatis-config.xml
用于配置上下文参数和数据库的运行环境(别名,环境),其中还包含<mapper>标签,
用于去表示引入了哪些映射器
第二类是映射器配置
映射器
由一个接口和对应的XML配置文件组成
在配置完映射器之后就可以开始发送sql并执行了:
此时有两种方法,第一是通过sqlsession去发送
第二是通过mapper接口发送,即用sqlsession的getMapper方法去拿到接口,
再调用接口中的方法去实现发送sql(推荐)
下面附上代码:
测试程序;
package student.main;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import org.apache.catalina.Session;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.core.io.Resource;
import student.mapper.studentMapper;
import student.pojo.student;
public class studentMain {
public static void main(String[] args) throws IOException {
SqlSessionFactory sqlSessionFactory = null ;
InputStream inputStream =null ;
SqlSession sqlSession =null ;
String resource = "mybatis-config.xml";
//这里使用了mybatis提供的获取xml文件的Resource方法
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = sqlSessionFactory.openSession();
studentMapper studentMapper = sqlSession.getMapper(studentMapper.class);
student student = studentMapper.getpassword("doctorL");
String ps = student.getPassword();
sqlSession.close();
System.out.println(ps);
}
}
pojo类
package student.pojo;
public class student {
private String studentName ;
private String password ;
private String studentnumber ;
public student() {
super();
// TODO Auto-generated constructor stub
}
public student(String studentName, String password, String studentnumber) {
super();
this.studentName = studentName;
this.password = password;
this.studentnumber = studentnumber;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getStudentnumber() {
return studentnumber;
}
public void setStudentnumber(String studentnumber) {
this.studentnumber = studentnumber;
}
}
mapper接口和xml
package student.mapper;
import student.pojo.student;
public interface studentMapper {
public student getpassword(String studentName);
}
<?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="student.mapper.studentMapper">
<select id="getpassword" parameterType="string" resultType ="student.pojo.student">
select password from student where studentName = #{name}
</select>
</mapper>
基础配置文件mybatis-config.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>
<properties resource="jdbc.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="student/mapper/studentMapper.xml"/>
</mappers>
</configuration>
jdbc.properties 和log4j.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=
# Global logging configuration
log4j.rootLogger= DEBUG , stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n