xml文件
    configuration—配置信息 driver url username password
    mapper——-SQL语句

    两个好处
    1.写完程序后还可更改(执行项目时候 修改几乎不会产生)
    2.一个mapper文件 StudentMapper.xml 语句(CURD)在一起(语句在一起便于管理)
    不好的地方
    1.文件本身的结构比较复杂
    2.文件中的SQL与DAO方法不在一起———开发者觉得写起来更方便的

    注解方式
    为了弥补XML文件的不好方式
    1.写在方法上面(SQL+DAO方法 绑定在一起 开发者写起来更加方便)
    2.注解通常就一行(比原来的xml形式简单 一对多 一对一 多对多关系也不是很简单)
    需要注意
    注解本身我们是调用不到的——底层需要通过反射技术来解析
    如果想要使用注解方式执行——必须依托于Mapper代理
    image.png

    dao.StudentDao

    1. package dao;
    2. import domain.Student;
    3. import org.apache.ibatis.annotations.Delete;
    4. import org.apache.ibatis.annotations.Insert;
    5. import org.apache.ibatis.annotations.Param;
    6. import org.apache.ibatis.annotations.Update;
    7. import java.util.Map;
    8. public interface StudentDao {
    9. //删除操作
    10. @Delete("delete from student1 where sid = #{sid}")
    11. public void delete(@Param("sid")Integer a);//用@Param注解取名,与SQL语句中的#{key}对应
    12. @Insert("insert into student1 values(#{sid},#{sname},#{ssex},#{sage})")
    13. public void insert(Student student);
    14. @Update("update student1 set sname=#{sname},ssex=#{ssex},sage=#{sage} where sid = #{sid}")
    15. public void update(Map param);//例如,param.put("sid",1);
    16. }

    domain.Student(省略,看表格)
    image.png
    service.StudentService

    1. package service;
    2. import dao.StudentDao;
    3. import domain.Student;
    4. import util.MyUtil;
    5. import java.util.Map;
    6. public class StudentService {
    7. private StudentDao dao= MyUtil.getMapper(StudentDao.class,true);
    8. //删除学生
    9. public void deleteStudent(Integer sid){
    10. dao.delete(sid);
    11. }
    12. //新增学生
    13. public void insertStudent(Student student){
    14. dao.insert(student);
    15. }
    16. //修改学生
    17. public void updateStudent(Map param){
    18. dao.update(param);
    19. }
    20. }

    util.MyUtil

    1. package util;
    2. import org.apache.ibatis.session.SqlSession;
    3. import org.apache.ibatis.session.SqlSessionFactory;
    4. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    5. public class MyUtil {
    6. private static SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Thread.currentThread().getContextClassLoader().getResourceAsStream("configuration.xml"));
    7. //提供方法sqlSession对象
    8. public static SqlSession getSqlSession(){
    9. return factory.openSession();
    10. }
    11. public static SqlSession getSqlSession(boolean flag){
    12. return factory.openSession(flag);
    13. }
    14. //提供方法mapper对象
    15. public static <T>T getMapper(Class clazz){
    16. return (T)getSqlSession().getMapper(clazz);
    17. }
    18. public static <T>T getMapper(Class clazz,boolean flag){
    19. return (T)getSqlSession(flag).getMapper(clazz);
    20. }
    21. }

    configuration.xml

    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE configuration
    3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    5. <configuration>
    6. <!--default属性 可以选择某一个environment环境-->
    7. <environments default="development1">
    8. <environment id="development1">
    9. <!--利用JDBC来管理提交 回滚等功能-->
    10. <transactionManager type="JDBC"></transactionManager>
    11. <!--type 设置当前数据源管理连接的方式 三种方式UNPOOLED、POOLED、JNDI详见下方文档-->
    12. <dataSource type="POOLED">
    13. <property name="driver" value="com.mysql.jdbc.Driver"/>
    14. <property name="url" value="jdbc:mysql://localhost:3306/testmybatis?useSSL=false&amp;characterEncoding=UTF-8"/>
    15. <property name="username" value="root"/>
    16. <property name="password" value="cy414ljh212,,,"/>
    17. </dataSource>
    18. </environment>
    19. </environments>
    20. <mappers>
    21. <mapper class="dao.StudentDao"></mapper>
    22. </mappers>
    23. </configuration>