步骤
- 有数据库
- 使用maven:需要mysql和mybatis坐标,还需要maven插件
- 创建实体类和数据库表对象对应(用于保存表中的一行数据)【注意不能导致没有无参构造方法】
- 创建持久层的dao接口,定义操作数据库的方法
- 创建mybatis使用的配置文件:即sql映射文件
写sql语句的,一般一个表一个sql映射文件。xml文件。文件需要写在接口所在的目录中,和接口的名字保持一致
- 创建mybatis的主配置文件
一个项目就一个主配置文件。提供了数据库的连接信息和sql映射文件的位置信息。一般放在resources目录下
- 创建使用mybatis类
映射文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.liangwei.dao.StudentDao"><select id="selectStudents" resultType="com.liangwei.entity.Student">select id, name, email, age from student order by id</select></mapper>
sql映射文件:写sql语句的,mybatis会执行这些sql语句
1. 指定约束文件
mybatis-3-mapper.dtd 是约束文件的名称,扩展名是dtd的
约束文件的作用: 用于限制当前出现的标签和组合必须符合mybatis的要求
- mapper 是当前文件的根标签,必须的
namespace:命名空间,唯一值,可以是自定义的字符串。使用dao接口的全限定名称
再当前文档中可以使用特定的标签,表示数据库的特定操作
<select>查询
<update>更新数据库的操作
<insert>insert语句
<delete>delete语句select语句:
id属性:要执行的sql语法的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句。可以自定义,但是要求使用接口中方法的名称
resultType属性:表示结果类型,是sql语句执行得到ResultSet,然后遍历得到的每一行数据绑定的对象。值是类型的全限定名称
主配置文件
在resources目录下
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 环境配置:数据库的连接信息default:必须和某个environment的id值一样,就是告诉mybatis使用哪个数据库--><environments default="myDev"><!--environment:一个数据库的配置信息,环境id属性:唯一值,自定义,表示环境的名称--><environment id="myDev"><!--transactionManager: mybatis的事物类型,两个可选值:【JDBC, MANAGED】1. JDBC mybatis底层调用的时JDBC的Connection对象2.MANAGED:把mybatis的事务处理委托交给其他的容器(一个服务器软件,一个框架)--><transactionManager type="JDBC"/><!-- 代表数据源,POOLED代表使用连接池--><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis_test"/><property name="username" value="admin"/><property name="password" value="admin"/></dataSource></environment></environments><mappers><!-- 一个mapper标签,指定一个文件的位置,从类路径开始的路径信息 target/classes(类路径)/....--><mapper resource="com/liangwei/dao/StudetnDao.xml"/></mappers></configuration>
主要定义了数据库的配置信息,和sql映射文件的位置信息
主函数
public static void main(String[] args) throws IOException {// 访问mybatis读取数据库数据// 1. 定义Mybatis主配置文件的名称,从类路径的根开始(target/classes/...)String config = "mybatis.xml";// 2. 读取config文件InputStream inputStream = Resources.getResourceAsStream(config);// 3. 创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();// 4. 创建SqlSessionFactory对象SqlSessionFactory sqlSessionFactory = builder.build(inputStream);// 5. 【重要】获取SqlSession对象,从中获取SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 6. 【重要】指定要执行的sqlId, 格式:namespace + '.' + idString sqlId = "com.liangwei.dao.StudentDao" + "." + "selectStudents";// 7 执行sql语句,通过sqlidList<Student> studentList = sqlSession.selectList(sqlId);// 8 输出结果studentList.forEach(stu -> System.out.println(stu));}
插入任务示例
【注意】MyBatis默认不是自动提交事务,所以在insert、update、delete后要手工提交事务
写接口 ```java public interface StudentDao {
public List
selectStudents(); // 插入学生记录的代码 public Integer insertStudent(Student student);
}
2. 修改映射文件```java<insert id="insertStudent" >insert into student values (#{id}, #{name}, #{email}, #{age})</insert>
- 构造测试方法 ```java public class TestMyBatis {
// 测试方法 @Test public void testInsert() throws IOException { String config = “mybatis.xml”; // 2. 读取config文件 InputStream inputStream = Resources.getResourceAsStream(config); // 3. 创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); // 4. 创建SqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = builder.build(inputStream); // 5. 【重要】获取SqlSession对象,从中获取SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); // 6. 【重要】指定要执行的sqlId, 格式:namespace + ‘.’ + id String sqlId = “com.liangwei.dao.StudentDao.insertStudent”; Student student = new Student(); student.setName(“张飞”); student.setId(1003); student.setEmail(“zhangfei@163.com”); student.setAge(20); // 7 执行sql语句,通过sqlid Integer result = sqlSession.insert(sqlId, student);
// 8 输出结果System.out.println(result);sqlSession.commit();}
}
<a name="Y12gY"></a>## 配置日志功能在`mybatis.xml`文件中添加标签`<setting name="logImpl" value="STDOUT_LOGGING"/>````java<configuration><!-- 添加该设置标签--><settings><setting name="logImpl" value="STDOUT_LOGGING"/></settings><!-- 环境配置:数据库的连接信息default:必须和某个environment的id值一样,就是告诉mybatis使用哪个数据库--><environments default="myDev"><!--environment:一个数据库的配置信息,环境id属性:唯一值,自定义,表示环境的名称--><environment id="myDev">...
