MyBatis-config.xml 中的知识点
1.起别名(作用是,在xxxMapper.xml文件中的resultType属性直接写类名即可,不用写全类名了)
2.将mapper映射写入配置(把写sql语句的那个配置文件放在MyBatis-config.xml ,当该配置被MyBatis工厂加载时也被加载)
如果是使用@Mapper的话,就把使用该注解的接口的全类名放在里面:
3.数据库的连接操作放在environments标签里面
xxxDao.xml中的知识点
1.所有操作语句都在里面,namespace的值为需要进行数据库操作的那个类(xxxDao.java)的全类名
<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="com.kuang.dao.xxxDao">
<select id="listCategory" resultType="Category">
select * from category_
</select>
</mapper>
2.简单的增删改查的标签(属性id的值必须是xxxDao.java对应的方法名)是 , ,,
select * from category_3.多参数操作时,要用到map(其实也可以不用,因为ssm框架的时候可以传多个参数),因为session的方法里面只能携带一个方法名和一个参数session.selectList(“listCategoryByIdAndName”,params),所以可以把多个参数放到map里面,然后查询。
Map<String,Object> params = new HashMap<>();
params.put(“id”, 3);
params.put(“name”, “cat”);
List cs = session.selectList(“listCategoryByIdAndName”,params);
4.多表查询,需要在里面声明映射关系(一对多时用collection,多对一时用association)
//type的值是实体类名,id只是个标识
//只用id字段使用标签
select c.*, p.*, c.id 'cid', p.id 'pid', c.name 'cname', p.name 'pname' from category_ c left join product_ p on c.id = p.cid多对一: 把collection换成association, 把ofType换成javaType
<!-- property: 指的是属性名称, javaType:指的是属性的类型 -->
<association property="category" javaType="Category">
5.注解方式用到的相关注解
@Mapper @Select @Insert @update @delete
MyBatis执行流程
1.调用Resource.getResourceAsStream(),将mybatis-config.xml转化成流的形式
2.使用SqlSessionFactoryBuilder.build() 加载该流,从而创建出对应的sqlSessionFactory工厂
3.从SqlSessionFactory工厂中获取SqlSession的实例session
4.使用session的内置的增删改查方法进行数据库操作。例如:session.selectList(“xxxDao.java里面的对应的方法名”`,“参数(根据需求可以无参)”); 或者使用session.getMapper(CategoryMapper.class
)获取一个mapper实例,使用该实例对CategoryMapper.class
里的方法进行数据库操作。