Mybatis续、Mapper映射器接口规则
配置一个MyBatis的Cost。查询资费列表的。。
与上面相同。只不过单独抽出来了一个类并定义了一个静态方法来获取Sqlsession
package unity;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisUtil {
public static SqlSession getSession(){
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//加载SqlMapConfig.xml文件
String conf = "SqlMapConfig.xml";
InputStream configStream = MyBatisUtil.class.getClassLoader().getResourceAsStream(conf);
//获取SqlSessionFactory
SqlSessionFactory factory =builder.build(configStream);
//获取SqlSession
SqlSession session = factory.openSession();
return session;
}
}
分页的话设置SQL语句就是
<select id="findPage" parameterType="int" resultType="entity.Cost">
select * from cost limit #{page},5
</select>
如果想只查询id和name就可以单独写一个sql
<select id="findMap" resultType="Map">
select cost_id,name from cost
</select>
一行对象对应一个map。key是cost_id value是其值
<select id="findMap" resultType="Map">
select cost_id,name from cost
</select>
List<Map<String,Object>> maps=session.selectList("findMap");
for(Map<String,Object> map :maps){
System.out.println(map.get("cost_id")+" "+map.get("name"));
}
可以把实体类与数据库字段名不同映射
<select id="findCost" resultMap="costmap">
select cost_id,name,status,creatime from cost
</select>
<resultMap type="entity.CostBean1" id="costmap">
<id property="id" column="cost_id"/>
<result property="name" column="name" />
<result property="status" column="status" />
<result property="creatime" column="creatime" />
</resultMap>
<!--注意ID的写法 -->
resultType默认按名称匹配装载数据
当然还可以用别名
就是在SQL语句中写
select cost_id id from cost
这个cost_id 就是数据库中的字段。但是后面的id是自己定义的bean中的属性,可以这么的用别名来实现对应。
MyBatis
1、返回数据类型
实体对象
a.属性名与字段一致 使用resulteType
b.属性名与字段不一致
给字段使用别名,使他与属性名一致(灵活一些)
使用resultMap替代resultType定义如何装载数据
Map集合
基本值
2.Mapper映射器接口规则
a.根据SQL定义的id属性当接口方法名
就是<select id=”findAll”>
的这个id
b.根据SQL定义的parameterType类型当方法参数类型
c.根据SQL定义的resultType类型定义方法的返回类型
(多行使用list<泛型> ;单行使用泛型)
d.将SQL定义文件<mapper>
的namespace属性指定成包名.接口名
定义一个Mapper映射器接口
package dao;
import java.util.List;
import java.util.Map;
import entity.Cost;
public interface CostDao {
public List<Cost> findAll();
public List<Cost> finPage(int page);
public List<Map<String,Object>> findMap();
}
SqlSession session = MyBatisUtil.getSession();
//测试Mapper映射接口
CostDao costdao = session.getMapper(CostDao.class);
//根据CostDao接口生成实现对象
System.out.println(costdao.getClass().getName());
List<Cost> list = costdao.findAll();
还没有评论,来说两句吧...