Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问
本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问。
添加依赖Jar包
这部分内容需要以下Jar包支持
mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁;
MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架;
log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录;
修改后的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lock</groupId>
<artifactId>LockMIS</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>LockMIS Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<org.springframework.version>4.0.7.RELEASE</org.springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.4</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.7</version>
</dependency> </dependencies>
<build>
<finalName>LockMIS</finalName>
</build>
</project>
更新项目后,可以看到新增的Maven依赖Jar包

MySQL建表并填充数据
在MySQL中建立ConfigItem对象bean对应的数据表t_g_configitem,并填充对应数据
CREATE TABLE `t_g_configitem` (
`ConfigItemID` int(11) NOT NULL,
`IDCode` varchar(40) NOT NULL,
`Label` varchar(40) DEFAULT NULL,
`ItemValue` varchar(500) DEFAULT NULL,
`Note` varchar(1000) DEFAULT NULL,
`DataTypeID` int(11) DEFAULT NULL,
PRIMARY KEY (`ConfigItemID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

数据库访问实现
要实现数据库访问,肯定少不了数据库连接这一环节。
在src/main/resources目录下新建一个config.properties文件来保存数据库连接信息
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/scland
username=root
password=root
单单有一个数据库连接配置文件可不行,还得配置MyBatis的运行环境,在resources目录下新建一个MyBatisConfig.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 指定数据库连接信息的位置 -->
<properties resource="config.properties"></properties>
<!--类型别名,默认引入com.lock.base.app.builder.bean下的所有类 -->
<typeAliases>
<package name="com.lock.base.app.builder.bean"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!--引入映射文件 -->
<mapper resource="com/lock/base/app/builder/daomapper/ConfigItemMapper.xml" />
</mappers>
</configuration>
在Util目录下新建一个通用类MyBatisUtil,实现数据库连接并获取活动SqlSession。
package com.lock.base.Util; import java.io.InputStream; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public abstract class MyBatisUtil { private static SqlSessionFactory factory=null; public static SqlSessionFactory getSqlSessionFactory(){
if(factory==null){
// 获得环境配置文件流
InputStream config = MyBatisUtil.class.getClassLoader().getResourceAsStream("MyBatisConfig.xml");
// 创建sql会话工厂
factory = new SqlSessionFactoryBuilder().build(config);
}
return factory;
} //获得会话
public static SqlSession getSession(){
return getSqlSessionFactory().openSession(true);
} /**
* 获得得sql会话
* @param isAutoCommit 是否自动提交,如果为false则需要sqlSession.commit();rollback();
* @return sql会话
*/
public static SqlSession getSession(boolean isAutoCommit){
return getSqlSessionFactory().openSession(isAutoCommit);
} }
修改IConfigItemDao接口,添加getAllConfigItems方法
package com.lock.base.app.builder.daointerface;
import java.util.List;
import com.lock.base.app.builder.bean.ConfigItem;
public interface IConfigItemDao {
public List<ConfigItem> getAllConfigItems();
public Boolean updateConfigItem(ConfigItem configItem);
}
修改ConfigItem实体bean对应的映射文件ConfigItemMapper.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">
<mapper namespace="com.lock.base.app.builder.daointerface.IConfigItemDao">
<select id="getAllConfigItems" resultType="ConfigItem">
select * from t_g_configitem
</select>
</mapper>
在ConfigItemDaoImpl类实现IConfigItemDao接口的getAllConfigItems方法
package com.lock.base.app.builder.daoimpl; import java.util.List; import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository; import com.lock.base.Util.MyBatisUtil;
import com.lock.base.app.builder.bean.ConfigItem;
import com.lock.base.app.builder.daointerface.IConfigItemDao; @Repository
public class ConfigItemDaoImpl implements IConfigItemDao { @Override
public List<ConfigItem> getAllConfigItems() {
//获得会话对象
SqlSession session=MyBatisUtil.getSession();
try {
//通过MyBatis实现接口BookTypeDAO,返回实例
IConfigItemDao configItemDao = session.getMapper(IConfigItemDao.class);
return configItemDao.getAllConfigItems();
} finally {
session.close();
}
} @Override
public Boolean updateConfigItem(ConfigItem configItem) {
// TODO Auto-generated method stub
return null;
} }
上述步骤完成后,就可以编写测试代码进行测试验证了
package com.lock; import static org.junit.Assert.*; import java.util.List; import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.lock.base.app.builder.bean.ConfigItem;
import com.lock.base.app.builder.daoimpl.ConfigItemDaoImpl;
import com.lock.base.app.builder.daointerface.IConfigItemDao;
import com.lock.base.app.builder.service.ConfigItemService;
import com.lock.base.config.AppConfig; public class BaseTest { static IConfigItemDao configItemDao;
@BeforeClass
public static void beforeClass()
{
configItemDao = new ConfigItemDaoImpl();
} @Test
public void test4() {
List<ConfigItem> configItems = configItemDao.getAllConfigItems();
for (ConfigItem configItem : configItems) {
System.out.println(configItem.getIdcode());
}
assertNotNull(configItems);
} }
执行Maven编译,确认无误后,运行测试

对比建表数据,测试代码的运行结果无误。
小结
本文在Java Web学习系列——Maven Web项目中集成使用Spring基础上,添加了MySQL,MyBatis等依赖Jar包,基于此实现了连接MySQL数据库,并顺利读取数据库中的表数据。
参考:
https://www.cnblogs.com/iflytek/p/7096481.html
https://www.cnblogs.com/xdp-gacl/p/4271627.html
https://blog.csdn.net/zhshulin/article/details/37956105
https://blog.csdn.net/zhshulin/article/details/23912615
https://blog.csdn.net/lutianfeiml/article/details/51864160
Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问的更多相关文章
- Java Web学习系列——Maven Web项目中集成使用Spring
参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...
- java web项目(spring项目)中集成webservice ,实现对外开放接口
什么是WebService?webService小示例 点此了解 下面进入正题: Javaweb项目(spring项目)中集成webservice ,实现对外开放接口步骤: 准备: 采用与spring ...
- nginx高性能WEB服务器系列之五--实战项目线上nginx多站点配置
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- 06_在web项目中集成Spring
在web项目中集成Spring 一.使用Servlet进行集成测试 1.直接在Servlet 加载Spring 配置文件 ApplicationContext applicationContext = ...
- 使用Java web工程建立Maven Web Module工程
1. 前言 之前有一篇关于搭建S2SH的文章中提到建立Maven Web Module工程,有人反馈说这个方面不会.那还是唠叨一下,写篇文章说明一下吧. 建立Maven Web Module的方式有多 ...
- ABP架构学习系列一 整体项目结构及目录
本系列是基于aspnetboilerplate-0.8.4.0版本写的,其中原因是由于较高的版本太抽象难以理解和分析,对于还菜菜的我要花更多的时间去学习. abp的源码分析学习主要来源于 HK Zha ...
- Java基础扫盲系列(-)—— String中的format
Java基础扫盲系列(-)-- String中的format 以前大学学习C语言时,有函数printf,能够按照格式打印输出的内容.但是工作后使用Java,也没有遇到过格式打印的需求,今天遇到项目代码 ...
- Java命令学习系列(7):Javap(转)
原文出处: Hollis(@Hollis_Chuang) javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码. 一般情况下,很少有人使用javap对class文件 ...
- 转:深入Java集合学习系列:HashSet的实现原理
0.参考文献 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特 ...
随机推荐
- Django网站管理、后台、模型(Admin)
1. 启动wampserver 2. 新建一个名为mysite的项目django-admin.py startproject mysite 3. 新建一个叫做blog的appcd mysitepyth ...
- uva111动态规划之最长公共子序列
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=74662#problem/C A B C D E C - Largest Rect ...
- Atom插件安装及常用插件推荐
Atom是个不错的文本编辑工具,也该可以改造成IDE用,主要靠插件实现各种扩展功能. 因为网络环境的原因,在线安装不容易成功,一般选择手动安装. 以下是我搜索网络资源后总结的手动安装方法. Atom插 ...
- javaweb回顾第七篇jsp
1:为什么会有JSP jsp全名(java server pages)中文叫做java服务器页面.在Servlet那一篇我们发现用Servlet可以生成动态页面,但是我们却在Servlet中却写了大量 ...
- ios开发FMDB导入SQLCipher加密数据库
转:http://www.2cto.com/kf/201407/315727.html [iOS]FMDB/SQLCipher数据库加解密,迁移
- UIBarButtonItem-添加自定义Left或者Right按钮
为UINavigationController添加UINavigationItem,我们可以这样写: 1.添加返回导航按钮backBarButtonItem 1.用系统自带的返回按钮 UIBa ...
- Bitbucket Repository size limits
Repository size limits By Justen Stepka, Product Manager on May 30, 2014 In order to improve and mai ...
- 在Windows下使用Nodist进行Node版本控制
完全卸载Node.js 首先卸载Node.js应用程序 确认在C:\Program Files中没有Nodejs目录 确认在C:\Program Files (x86)没有Nodejs目录 删除C:\ ...
- RTTI的实现(vc)--转载
RTTI (Run Time Type info) 这个神奇的东西用于存储类的相关信息,用于在运行时识别类对象的信息.C++ 里面只记录的类的名字和类的继承关系链.使得编译成二进制的代码,对象可以知道 ...
- 闲暇时间开发的个人app
最近一段时间公司不是很忙,晚上基本没怎么加班.所以自己利用晚上在家的时间开发了一个app(奇趣营),其实自从转android开发以来,就有想过要自己开发一个app.一方面可以提升自己的经验:另一方面可 ...