1.SqlSessionFactory
SqlSessionFactory的主要作用是创建SqlSession
2.SqlSession
SqlSession它包含了数据库中的所有SQL操作方法,由于其底层封装了JDBC连接,所以可以直接使用其实例来执行已映射的SQL语句。
3.mybatis的配置文件:
其首要作用是承载MyBatis的配置信息,例如MyBatis的约束,数据库环境等等,这是config.xml中的主要元素的描写和作用。
元素 | 对元素的描写 |
configuration | 配置文件的根元素,其余元素为子元素 |
properties | 用于将内部的配置文件外在化,通过外在的配置来动态替换内部属性,例如数据库发链接属性 |
setting | 改变mybatis的运行行为:开启二级缓存,开启延迟缓存 |
typeAkiases | 用于为Java类型创建一个简短的别名 |
tyoeHandle | 将预处理发参数从Java转换为jdbc类型 |
plugins | 用于配置用户开发插件 |
environment | 对数据源的配置,可以配置多个数据库 |
mapper | 指定mybatis映射文件的位置 |
4.mybatis的映射文件
即xxxxxMapper.xml中的元素描述。
元素 | 元素描述 |
mapper | 根元素,其他都为子元素 |
select | 查询语句,可自定义参数 |
insert | 插入语句,返回一个整数 |
delete | 删除语句,返回一个整数 |
update | 更新语句,返回一个整数 |
sql | 定义一部分sql,可以被其他语句引用 |
cache | 给定命名空间缓存配置 |
resultMap | 用于描述如何从数据库结果集中加载对象 |
5.在初始mybatis中学习了前几个,所以这里主要写resulMapper:
还是用customer表进行实验:
在CustomerMapper添加配置代码:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <mapper namespace="com.zyk.mapper.CustomerMapper"> 5 <select id="findCustomerById" parameterType="Int" resultType="com.zyk.po.Customer"> 6 select * from t_customer where id = #{id} 7 </select> 8 <select id="findCustomerByName" parameterType="String" resultType="com.zyk.po.Customer"> 9 select * from t_customer where username like concat('%',#{value},'%'); 10 </select> 11 <insert id="addCustomer" parameterType="com.zyk.po.Customer"> 12 insert into t_customer(username,jobs,phone) 13 values(#{username},#{jobs},#{phone}) 14 </insert> 15 <delete id="deleteCustomer" parameterType="int"> 16 delete from t_customer where id=#{id} 17 </delete> 18 <update id="updateCustomer" parameterType="com.zyk.po.Customer"> 19 update t_customer set 20 username=#{username},jobs=#{jobs},phone=#{phone} 21 where id=#{id} 22 </update> 23 <resultMap type="com.zyk.po.Customer" id="resultMap"> 24 <id property="id" column="id"/> 25 <result property="username" column="username"/> 26 <result property="jobs" column="jobs"/> 27 <result property="phone" column="phone"/> 28 </resultMap> 29 <select id="findAll" resultMap="resultMap"> 30 select * from t_customer 31 </select> 32 </mapper>
测试代码:
1 package com.zyk.Test; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.List; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory; 10 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 11 import org.junit.Test; 12 13 import com.zyk.po.Customer; 14 15 public class MybatisFindAllTest { 16 @Test 17 public void findAll() throws IOException { 18 String resource="config.xml"; 19 InputStream inputStream=Resources.getResourceAsStream(resource); 20 SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream); 21 SqlSession sqlSession=sessionFactory.openSession(); 22 List<Customer> list=sqlSession.selectList("com.zyk.mapper.CustomerMapper.findAll"); 23 for(Customer customer:list) { 24 System.out.println(customer); 25 } 26 sqlSession.commit(); 27 sqlSession.close(); 28 } 29 }
实验截图:
实验总结:
本次实验没出现各方面的问题,毕竟有初始mybatis的练习。。。。。。