SSM学习06深入认识mybatis的核心配置

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的练习。。。。。。

猜你喜欢

转载自www.cnblogs.com/2312947032zyk/p/10537517.html
今日推荐