1.什么是 MyBatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
mybatis架构
SqlMapConfig.xml(名称不固定),配置内容:数据源、事务、properties、typeAliases、settings、mapper配置。
SqlSessionFactory--会话工厂,作用是创建SqlSession,实际开发中以单例模式管理 SqlSessionFactory。
SqlSession--会话,是一个面向用户(程序员)的接口,使用mapper代理方法开发是不需要程序员直接调用sqlSession的方法。是线程不安全,最佳适用场合方法体内。
mybatis 核心配置文件
<?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/><!-= 属性 -->
<settings /><!-- 设置 -->
<typeAliases /><!-- 类型命名-->
<typeHandlers /><!-- 类型处器-->
<cobjectFactory /><!-- 对象工厂-->
<plugins /><!-- 插件-->
<environments><!-- 配置环境-->
<environment><!-- 环境变量 -->
<transactionManager /><!-- 事务管理器 -->
<datasource /><!-- 数据源-->
</environment>
</environments>
<databaseIdprovider /><!-- 数据厂商标识 -->
<mappers /><!-- 射器 -->
</configuration>
<?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="mysql">
<environment id="mysql">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="pooled">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
<environment id="oracle">
<transactionManager type=""></transactionManager>
<dataSource type=""></dataSource>
</environment>
</environments>
<mappers>
<mapper class="com.dao.UserDao"></mapper>
</mappers>
</configuration>
实体类
package com.bean;
public class ClassInfo {
private Integer cid;
private String cname;
private String cinfo;
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getCinfo() {
return cinfo;
}
public void setCinfo(String cinfo) {
this.cinfo = cinfo;
}
@Override
public String toString() {
return "ClassInfo{" +
"cid=" + cid +
", cname='" + cname + '\'' +
", cinfo='" + cinfo + '\'' +
'}';
}
}
创建接口类
sql语句
测试类
全查
//全查
@Test
public void testselect(){
List<ClassInfo> userList= userDao.selectAll();
for (ClassInfo classInfo:userList){
System.out.println(classInfo);
}
}
单查
@Test
public void testid(){
ClassInfo classInfo=userDao.selectid(101);
System.out.println(classInfo);
}
新增
//添加
@Test
public void testadd(){
ClassInfo classInfo=new ClassInfo();
classInfo.setCname("xx");
classInfo.setCinfo("xx");
int a=userDao.add(classInfo);
if (a>0){
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
}
删除
//删除
@Test
public void testdede(){
int a=userDao.delete(104);
if (a>0){
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
}
mybatis映射文件
<update id="update" parameterType="com.zhao.bean.Student">
update student set name=#{name},age=#{age},gender=#{gender},score=#{score} where id=#{id};
</update>
一对多查询
sql语句
测试类