版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Coder_Boy_/article/details/82935139
-
查询结果字段名与javabean属性名不一致的处理方式:
-
MyBatis中DAO对象的生成方式:
#Dao对象有两种生成方法
##采用Mapper接口由MyBatis框架生成
DataSource-->SqlSessionFactoryBean-->MapperScannerConfigurer
-->将MyBatis框架生成的Dao对象放入Spring容器
##程序员自己编写Dao实现类
DataSource-->SqlSessionFactoryBean
-->SqlSessionTemplate-->给自己编写的Dao注入
//扫描
public class CostDao{
//注入
private SqlSessionTemplate template;
public List<User> findAll(){
// SqlSession session = ssf.openSession();
// List list = session.selectList("findAll");
// session.close();
// return list;
return template.selectList("findAll");
}
}
案例采用 Mapper接口方式演示:
案例演示:
工程案例目录结构
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.study</groupId>
<artifactId>mybatis-day07-2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
<environments default="environment">
<environment id="environment">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="username" value="learn"/>
<property name="password" value="learn"/>
</dataSource>
</environment>
</environments>
<!-- 加载SQL定义文件 -->
<mappers>
<mapper resource="UserMapper.xml" />
</mappers>
</configuration>
CostMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.dk.dao.CostDAO">
<!-- 利用别名,将查询结果字段名与Cost属性名保持一致 -->
<select id="findAll" resultType="com.dk.entity.Cost">
select cost_id id,
name,
base_duration,
base_cost,
unit_cost,
status,
descr,
creatime,
startime,
cost_type
from cost
</select>
<!-- 利用resultMap自定义装载规则,代替resultType -->
<select id="findAll1" resultMap="costMap">
select * from cost
</select>
<resultMap type="com.dk.entity.Cost" id="costMap">
<id property="id" column="cost_id"/>
<result property="name" column="name"/>
<result property="base_cost" column="base_cost"/>
<!-- 省略了名称一致的字段装载配置 -->
</resultMap>
</mapper>
Cost.java
package com.dk.entity;
import java.io.Serializable;
import java.sql.Date;
public class Cost implements Serializable{
private Integer id;//不一致
private String name;
private Long base_duration;
private Double base_cost;
private Double uint_cost;
private String status;
private String descr;
private Date creatime;
private Date startime;
private String cost_type;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getBase_duration() {
return base_duration;
}
public void setBase_duration(Long base_duration) {
this.base_duration = base_duration;
}
public Double getBase_cost() {
return base_cost;
}
public void setBase_cost(Double base_cost) {
this.base_cost = base_cost;
}
public Double getUint_cost() {
return uint_cost;
}
public void setUint_cost(Double uint_cost) {
this.uint_cost = uint_cost;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDescr() {
return descr;
}
public void setDescr(String descr) {
this.descr = descr;
}
public Date getCreatime() {
return creatime;
}
public void setCreatime(Date creatime) {
this.creatime = creatime;
}
public Date getStartime() {
return startime;
}
public void setStartime(Date startime) {
this.startime = startime;
}
public String getCost_type() {
return cost_type;
}
public void setCost_type(String cost_type) {
this.cost_type = cost_type;
}
}
CostDAO.java
package com.dk.dao;
import java.util.List;
import com.dk.entity.Cost;
public interface CostDAO {
public List<Cost> findAll();
public List<Cost> findAll1();
}
TestCostDAO.java
package test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
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.Test;
import com.dk.dao.CostDAO;
import com.dk.entity.Cost;
public class TestCostDAO {
@Test
public void test() throws IOException{
//将SqlMapConfig.xml转成Reader
String conf = "conf/SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(conf);
//获取SqlSession
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(reader);
SqlSession session = factory.openSession();
//获取CostDAO对象
CostDAO dao = session.getMapper(CostDAO.class);
List<Cost> list = dao.findAll1();
for(Cost cost:list){
System.out.println(cost.getId()+" " +cost.getName()
+" "+cost.getCreatime());
}
session.close();//释放连接资源
}
}
编写每一个方法对应依次运行test进行测试:
扫描二维码关注公众号,回复:
3575034 查看本文章