博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring与Ibatis整合入门
阅读量:5248 次
发布时间:2019-06-14

本文共 4719 字,大约阅读时间需要 15 分钟。

Ibatis作为一个将java对象与sql中的数据进行映射的工具,可以将一个应用中常用的sql操作抽象为模版,在应用后续与数据库的交互中,将输入sql语句简化为更改一部分参数。
ibatis整合到springmvc项目中包括以下的内容:
1. 创建一个与数据表相对应的java简单对象POJO
例如:我们的数据表结构如下:
相应的,我们创建一个java对象AttendDO:
public class AttendDO {    private String username;    private Date attendTime;        private int type;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public Date getAttendTime() {        return attendTime;    }    public void setAttendTime(Date attendTime) {        this.attendTime = attendTime;    }    public int getType() {        return type;    }    public void setType(int type) {        this.type = type;    }}
注意:所有属性必须添加相应的get和set函数,因为ibatis会将数据写入到创建的AttendDO对象中。
2. 在spring的配置文件中增加ibatis需要的配置文件
ibatis主要完成以下两件事:
  • 根据JDBC规范建立与数据库的连接
  • 通过反射打通Java对象与数据库数据交互之间相互转化的关系
                                                                        ———摘自《深入分析Java Web技术内幕》
我们新建一个配置文件applicationContext.xml文件(名称没有限制)
classpath:jdbc.properties
前面提到,ibatis共有两大任务,而applicationContext.xml包括了所有ibatis的配置信息。
其中,dataSource配置了与数据库交互的所有信息,这些信息在配置文件jdbc.properties中。
driver = com.mysql.jdbc.Driverurl = jdbc:mysql://localhost:3306/Attendanceusername = rootpassword = 910718
而另一项任务:将java对象与数据库的数据进行关联,则在sqlMapClient中进行配置。
sqlMapClientFactoryBean是一个产生sqlMapClient的工厂,而sqlMapClient中存放的最主要的信息包括configLocation和dataSource,其中dataSource用来链接数据库,而configLocation中存放了另一个ibatis重要的配置文件,我们这里将该文件起名为sqlMapConfig.xml。首先给结论:configLocation中存放了有关数据表和java对象映射的内容。
其中,sqlMapConfig中写入相应的映射文件,这个映射就表示了一张数据表与相应的java对象的映射关系。sqlmap-attend.xml如下:

有关sqlmap配置的技巧,已经有很多博客详细写了,我就不在赘述了。贴出链接:

上述文件给出了数据表中每个数据和attendDO中的每个成员变量的映射关系,同时给出了相应的sql语句模版。
回过头,我们看applicationContext.xml文件,文件中包含了配置数据库连接、数据表和java对象映射关系以及相应的sql语句模版三个功能。
到此为止,所有ibatis的配置内容介绍完毕,最后只需要将总的配置文件applicationContext.xml文件在spring的配置文件中进行配置即可:
在dispatcher-servlet.xml中:
3.dao层
spring项目的dao层一般用来与数据库进行交互。下面为AttendDaoImpl.java
@Componentpublic class AttendDaoImpl extends SqlMapClientDaoSupport implements AttendDAO {    @Resource(name = "sqlMapClient")    private SqlMapClient sqlMapClient;    @PostConstruct    public void initSqlMapClient(){        super.setSqlMapClient(sqlMapClient);    }    @Override    public boolean insert_attend(AttendDO attendDO) {        Object result = getSqlMapClientTemplate().insert("insert_attend", attendDO);        return result != null ? true:false;    }    @Override    public List
select_byTime(Date startTime, Date endTime) { Map
timeMap = new HashMap
(); timeMap.put("startTime", startTime); timeMap.put("endTime", endTime); List
result = getSqlMapClientTemplate().queryForList("select_attend_time", timeMap); return result; } @Override public List
select_byUser(String username, Date startTime, Date endTime) { return null; } @Override public List
> select_ALLUser(Date startTime, Date endTime) { return null; }}
上面一段代码中,首先要将配置文件中的sqlMapClient的bean实例化传给SqlMapClientDaoSupport。
以select_byTime()函数为例,首先,为了传递两个参数,构造一个map结构作为入参。之后getSqlMapClientTemplate()函数由beanfactory构造了一个SqlMapClientTemplate的实例。由于程序配置的sqlMapClient在开始已经写入到本类中,所以生成的sqlMapClient都具有相同的配置信息。之后,调用其queryForList()函数,该函数由两个参数,第一个参数为对应的sqlMap文件中sql模版的id,第二个参数为为sql模版传递的参数。在执行了查询操作后,会将结果集返回,返回的类型也在sqlMap中由resultMap配置项进行了规定。
4.测试
直接贴代码:
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(value="classpath:applicationContext.xml")public class AttendDAOTest {    @Resource    private AttendDaoImpl attendDaoImpl;    @Test    public void selectTest() throws ParseException    {        SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd");        Date startTime = sim.parse("2016-09-12");        Date endTime = sim.parse("2016-09-17");        List
list = attendDaoImpl.select_byTime(startTime, endTime); for(int i = 0; i

  

转载于:https://www.cnblogs.com/kingatnuaa/p/6200522.html

你可能感兴趣的文章
CF E2 - Array and Segments (Hard version) (线段树)
查看>>
Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
查看>>
SIGPIPE并产生一个信号处理
查看>>
CentOS
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
爬虫-通用代码框架
查看>>
2019春 软件工程实践 助教总结
查看>>
YUV 格式的视频呈现
查看>>
Android弹出框的学习
查看>>
现代程序设计 作业1
查看>>
在android开发中添加外挂字体
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
多线程实现资源共享的问题学习与总结
查看>>
Learning-Python【26】:反射及内置方法
查看>>
torch教程[1]用numpy实现三层全连接神经网络
查看>>
java实现哈弗曼树
查看>>
转:Web 测试的创作与调试技术
查看>>
python学习笔记3-列表
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>