2018-4-24 17:10 Tuesday
今天记录一下mybatis的第二种开发方式:
Mapper代理开发:
第一步:在src下新建一个package,命名为com.kh.Mapper
第二步:将CategoryDao.java和Category.xml复制一份放在com.kh.mapper中,并改名为:CategoryMapper.java和CategoryMapper.xml
我们还需要编写mapper.xml映射文件
我们需要编写mapper接口(相当于Dao接口),还需要遵守一些开发规范,mybatis可以自动生成mapper接口实现类 代理对象
开发规范:
1.在mapper.xml中namespace等于mapper接口的地址. 这里的"/"和"."可以互换
2.mapper.java接口中的方法名和mapper.xml中的statement的id保持一致;
3.mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致
4.mapper.java接口中的方法输出参数类型和mapper.xml中statement的resultType指定的类型一致
以上开发规范只要是对下边的代码进行统一的生成:
Category cg=sqlSession.selectOne("FindById"id);
sqlSession.Insert("InsertCategory",cg);
-------------------------------------------------测试代码---------------------------------------
package com.kh.MapperTest;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.kh.mapper.CategoryMapper;
import com.kh.pojo.Category;
public class MapperTest {
private SqlSessionFactory sqlSessionFactory;
public void setUp() throws Exception {
//创建SqlSessionFactory
//mybatis配置文件
String resource="mybatis-config.xml";
//得到配置文件流
InputStream inputStream=Resources.getResourceAsStream(resource);
//创建会话工厂,传入mybatis的配置文件信息
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}
//-----------------略略略-----分隔符---------------------------------------
public void test() throws Exception {
SqlSession sqlSession= sqlSessionFactory.openSession();
//创建CategoryMapper对象,mybatis自动生成mapper代理对象
CategoryMapper cgMapper=sqlSession.getMapper(CategoryMapper.class);
//调用CategoryMapper的方法
Category cg=cgMapper.FindById(1);
System.out.println(cg);
sqlSession.close();
}
public static void main(String[] args) throws Exception {
MapperTest test=new MapperTest();
test.setUp();
test.test();
}
}
Categorymapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 这里的namespace对应到他的xxxmapper.java -->
<mapper namespace="com.kh.mapper.CategoryMapper">
<select id="FindById" parameterType="int" resultType="Category">
select * from category_ where id=#{id}
</select>
<insert id="InsertCategory" parameterType="Category">
insert into category_(name) values(#{name})
</insert>
<update id="UpdateById" parameterType="Category">
update category_ set name=#{name} where id=#{id}
</update>
<delete id="DeleteById" parameterType="int" >
delete from category_ where id=#{id}
</delete>
</mapper>
CategoryMapper.java
package com.kh.mapper;
import com.kh.pojo.Category;
/*
* Title:CategoryMapper
* Description:Mapper接口
* Date:2018-4-23 17:41
*/
public interface CategoryMapper {//接口需要实现类实现
//根据id查询
public Category FindById(int id) throws Exception;
//添加
public Category InsertCategory(Category cg) throws Exception;
//根据id删除
public void DeleteById(int id) throws Exception;
}