项目中数据访问层的框架,他的主要作用其实就是我们和数据库进行交互的操作。替代我们在javaWeb中学习的JDBC技术。DButils其实是一个框架。
jsp:webDemo。
我们需要拿到myabatis的jar包。
如果使用的是eclipse,那么在创建所有项目之前需要设置一下工作空间的编码格式,只要工作空间发生改变就需要重新设置。
解决乱码问题:
三码合一。(数据库编码+服务器端代码+webpage的编码)
JAVA项目中如何导入jar包?
导入jar包
mybatis的核心包:myabatis框架的实现
日志包:log4J 记录运行产生的信息,包括错误信息和正确的执行流程信息
驱动包:就是让Java代码和指定的数据库进行链接的一个外部实现类
jar包:外部给我们提供给的实现类,说白了就是组件。
package com.qf.mybatis.pojo;
/**
* 学生实体类
* 注意在mybatis里面尽量让我们的基本类型定义Java包装类型
*/
import java.util.Date;
public class Student {
private Integer stuId;
private String stuName ;
private Character stuSex;
private Date stuBirthday;
private Integer stuAge ;
public Integer getStuId() {
return stuId;
}
public void setStuId(Integer stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public Character getStuSex() {
return stuSex;
}
public void setStuSex(Character stuSex) {
this.stuSex = stuSex;
}
public Date getStuBirthday() {
return stuBirthday;
}
public void setStuBirthday(Date stuBirthday) {
this.stuBirthday = stuBirthday;
}
public Integer getStuAge() {
return stuAge;
}
public void setStuAge(Integer stuAge) {
this.stuAge = stuAge;
}
@Override
public String toString() {
return "Student [stuId=" + stuId + ", stuName=" + stuName + ", stuSex=" + stuSex + ", stuBirthday="
+ stuBirthday + ", stuAge=" + stuAge + "]";
}
}
1.作用
1.告知Java程序我们要使用mybatis框架
2.通过属性文件或者连接信息创建mybatis的连接池对象
3.加载我们的SQL语句并且简单执行获取到返回对象
package com.qf.mybatis.dao;
/**
* 学生类的数据访问层接口
*
*/
import java.util.List;
import com.qf.mybatis.pojo.Student;
public interface StudentDao {
/**
* 添加学生信息
* @param student
* @return
*/
public int addStu(Student student);
/**
* 查询所有学生数据
* @return
*/
public List findAllStu();
}
注意事项:
1.映射文件的位置必须和你要实现的接口在同一个资源路径下
2.一个接口对应这一个mybatis的映射文件,可以理解位mybatis的映射文件其实就是我们接口的实现类
3.映射文件的名称必须和接口的名称保持一致。
步骤:
1.黏贴头部文件
2.编写映射文件
insert into student(stuName,stuSex,stuBirthday,stuAge)
values(#{stuName},#{stuSex},#{stuBirthday},#{stuAge})
package com.qf.mybatis.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
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.junit.Test;
import com.qf.mybatis.dao.StudentDao;
import com.qf.mybatis.pojo.Student;
public class MyBatisDemo {
@Test
public void demo1() {
try {
//1.把mybatis的配置文件读取到了内存中
InputStream input = Resources.getResourceAsStream("MybatisConfig.xml");
//2.通过读取到内存的配置文件创建mybatis的核心对象 sqlSessionFactory
//sqlSessionFactory:专门用来构建sqlSession的工厂,构建连接池
//sqlSession:链接对象
//2.获取sqlSessionFactory工厂,主要作用就是用来创建sqlSession对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(input);
//3.获取sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.通过sqlSession对象获取数据访问层接口的代理类
StudentDao studao = sqlSession.getMapper(StudentDao.class);
//5.通过代理类执行方法
Student student = new Student();
student.setStuAge(20);
student.setStuBirthday(new Date());
student.setStuName("session");
student.setStuSex('男');
int row = studao.addStu(student);
//5.1 提交更新
sqlSession.commit();
System.out.println(row);
//6.释放资源,把sqlsession放回到sqlSessionFactory
sqlSession.close();
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void demo2() {
try {
//1.把mybatis的配置文件读取到了内存中
InputStream input = Resources.getResourceAsStream("MybatisConfig.xml");
//2.通过读取到内存的配置文件创建mybatis的核心对象 sqlSessionFactory
//sqlSessionFactory:专门用来构建sqlSession的工厂,构建连接池
//sqlSession:链接对象
//2.获取sqlSessionFactory工厂,主要作用就是用来创建sqlSession对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(input);
//3.获取sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.通过sqlSession对象获取数据访问层接口的代理类
StudentDao studao = sqlSession.getMapper(StudentDao.class);
List list = studao.findAllStu();
for (Student student : list) {
System.out.println(student);
}
//6.释放资源,把sqlsession放回到sqlSessionFactory
sqlSession.close();
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.qf.mybatis.dao;
/**
* 学生类的数据访问层接口
* 1.首先确定你数据访问层的方法执行哪一个类型的SQL语句
* 例如:
SQL语句类型 使用标签
添加 @insert
查询 @select
修改 @update
删除 @delete
*/
import java.util.List;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.junit.runners.Parameterized.Parameters;
import com.qf.mybatis.pojo.Student;
public interface StudentDao {
/**
* 添加学生信息
* @param student
* @return
*/
/**
* value: sql语句的编写位置
*/
@Insert(
value="insert into student(stuName,stuSex,stuBirthday,stuAge) values(#{stuName},#{stuSex},#{stuBirthday},#{stuAge})"
)
public int addStu(Student student);
/**
* 查询所有学生
* @return
*/
@Select("select * from student")
public List findAllStu();
}
注意删除核心配置文件的xml添加接口,删除改接口下的xml。
package com.qf.mybatis.dao;
/**
* 学生类的数据访问层接口
* 1.首先确定你数据访问层的方法执行哪一个类型的SQL语句
* 例如:
SQL语句类型 使用标签
添加 @insert
查询 @select
修改 @update
删除 @delete
*/
import java.util.List;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.junit.runners.Parameterized.Parameters;
import com.qf.mybatis.pojo.Student;
public interface StudentDao {
/**
* 添加学生信息
* @param student
* @return
*/
/**
* value: sql语句的编写位置
*/
@Insert(
value="insert into student(stuName,stuSex,stuBirthday,stuAge) values(#{stuName},#{stuSex},#{stuBirthday},#{stuAge})"
)
public int addStu(Student student);
/**
* 查询所有学生
* @return
*/
@Select("select * from student")
public List findAllStu();
}
d.Parameters;
import com.qf.mybatis.pojo.Student;
public interface StudentDao {
/**
* 添加学生信息
* @param student
* @return
*/
/**
* value: sql语句的编写位置
*/
@Insert(
value="insert into student(stuName,stuSex,stuBirthday,stuAge) values(#{stuName},#{stuSex},#{stuBirthday},#{stuAge})"
)
public int addStu(Student student);
/**
* 查询所有学生
* @return
*/
@Select("select * from student")
public List findAllStu();
}