本篇内容还是建立在上一篇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的数据访问的更多相关文章

  1. Java Web学习系列——Maven Web项目中集成使用Spring

    参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...

  2. java web项目(spring项目)中集成webservice ,实现对外开放接口

    什么是WebService?webService小示例 点此了解 下面进入正题: Javaweb项目(spring项目)中集成webservice ,实现对外开放接口步骤: 准备: 采用与spring ...

  3. nginx高性能WEB服务器系列之五--实战项目线上nginx多站点配置

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  4. 06_在web项目中集成Spring

    在web项目中集成Spring 一.使用Servlet进行集成测试 1.直接在Servlet 加载Spring 配置文件 ApplicationContext applicationContext = ...

  5. 使用Java web工程建立Maven Web Module工程

    1. 前言 之前有一篇关于搭建S2SH的文章中提到建立Maven Web Module工程,有人反馈说这个方面不会.那还是唠叨一下,写篇文章说明一下吧. 建立Maven Web Module的方式有多 ...

  6. ABP架构学习系列一 整体项目结构及目录

    本系列是基于aspnetboilerplate-0.8.4.0版本写的,其中原因是由于较高的版本太抽象难以理解和分析,对于还菜菜的我要花更多的时间去学习. abp的源码分析学习主要来源于 HK Zha ...

  7. Java基础扫盲系列(-)—— String中的format

    Java基础扫盲系列(-)-- String中的format 以前大学学习C语言时,有函数printf,能够按照格式打印输出的内容.但是工作后使用Java,也没有遇到过格式打印的需求,今天遇到项目代码 ...

  8. Java命令学习系列(7):Javap(转)

    原文出处: Hollis(@Hollis_Chuang) javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码. 一般情况下,很少有人使用javap对class文件 ...

  9. 转:深入Java集合学习系列:HashSet的实现原理

    0.参考文献 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特 ...

随机推荐

  1. JSTL核心标签库使用

    JSTL是什么? java standard taglib(java标准标签库). 标签是什么? sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换 的一 ...

  2. [轻微]WEB服务器启用了OPTIONS方法/如何禁止DELETE,PUT,OPTIONS等协议访问应用程序/tomcat下禁用不安全的http方法

    使用了360网站安全检测 查到有OPTIONS方法 百度了下 https://my.oschina.net/maliang0130/blog/338725 找到这个方法奈何http.conf 找不到无 ...

  3. Leetcode 6 ZigZag Conversion 字符串处理

    题意:将字符串排成Z字形. PAHNAPLSIIGYIR 如果是5的话,是这样排的 P     I AP   YR H L G N  SI A    I 于是,少年少女们,自己去找规律吧 提示:每个Z ...

  4. How Tomcat works — 六、tomcat处理请求

    tomcat已经启动完成了,那么是怎么处理请求的呢?怎么到了我们所写的servlet的呢? 目录 Http11ConnectionHandler Http11Processor CoyoteAdapt ...

  5. Java并发包中Lock的实现原理

    1. Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制.本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\l ...

  6. 隐知识:reloadData 方法之后,view并不会立即更新其contentSize

    在使用UITableView .UICollectionView ,调用reloadData方法之后,并不立即更新其contentSize.原因如下:http://jacksonriver.com/n ...

  7. php生成UUID

    UUID含义是 通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, O ...

  8. 比较好的文件复制工具fastcopy和校验工具

    fastcopy http://ipmsg.org/tools/fastcopy.html.en extractfile --可以选用ADLER32计算模式,更快速.

  9. libevent 安装异常

    有homebrew的可以使用 1 brew install memcached 这个命令来安装没有homebrew的可以直接手动安装1.去官网http://memcached.org/下载最新的包,然 ...

  10. Build Slic3r on Windows // 如何在Windows上编译Slic3r

    下载Strawberry Perl 5.22 64bit绿色版,解压缩到某个地方,比如C盘根目录,比如 C:\strawbrry-perl-5.22.2.1-64bit-portable 下载Boos ...