本篇内容还是建立在上一篇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. 电影成生活O2O必争之地,破局之战就此拉开

    这一次的两会过后,互联网最流行的一个词恐怕当属“互联网+”.尤其是总理关于“以互联网为载体.把线上线下互动的新兴消费搞得红红火火”的一席话,更是让国内的O2O从业者兴奋不已.百度李彦宏在两会接受记者采 ...

  2. css3动画animation

    动画:animation   animations这物似乎还是只在webkit,moz核心的浏览器上起作用 <!DOCTYPE html><html lang="en&qu ...

  3. Entity Framework Code First迁移基本面拾遗

    项目中用到了EF Code First和迁移,但发现有些方面似懂非懂.比如:如何在迁移文件中控制迁移过程?如果在迁移文件中执行SQL语句?如何使用Update-Database的其它参数?数据库在生产 ...

  4. KVM 基础使用(一)

    Host OS:CentOS release 6.3 (Final) x64 安装时选择Virtual Host 1.测试KVM有没有启动 运行 lsmod | grep kvm 和 stat /de ...

  5. latextools \cite 自动补全

    最近在用latex写毕业论文,编辑环境用的是Sublime Text 2 加 latextools 插件,在使用latextools的\cite命令来引用参考文献时,我们希望输入\cite{ 后自动弹 ...

  6. C++ 虚函数在基类与派生类对象间的表现及其分析

    近来看了侯捷的<深入浅出MFC>,读到C++重要性质中的虚函数与多态那部分内容时,顿时有了疑惑.因为书中说了这么一句:使用“基类之指针”指向“派生类之对象”,由该指针只能调用基类所定义的函 ...

  7. c# 小数取整

    向上取整 math.ceiling() = math.ceiling( math.ceiling( 向下取整 math.) = math. math. C#取整函数实例应用详解 C#取整函数的相关使用 ...

  8. nodejs - 如何完全更新

    Nodejs可以毫不犹豫地说一个版本狂魔,时不时就发布一个版本,而且还一直没有一个1.0版本,好囧呀,对于我们这些有强迫症的人来说,的确不是好事. 下面我就说一下Nodejs中常见的更新方式. 1. ...

  9. ecshop登陆后价格可见,会员注册登陆才能显示价格

    打开模版文件夹里面的goods.dwt 查找{$lang.shop_price}<font class="price" id="ECS_SHOPPRICE" ...

  10. 【网络编程】——connect函数遇见EINTR的处理

    最近在公司项目中突然报错如下 “connect: Interrupted system call”, 经过查找代码发现是在创建 socket 中执行了 connect 函数失败导致.上网查阅资料发现这 ...