本篇内容还是建立在上一篇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. atitit.动态加载数据库配置in orm hibernate mybatis

    atitit.动态加载数据库配置in orm 1. 动态加载数据库配置的优点::: 1 1.1. 组合多个配置文件... 1 1.2. 连接多个数据库 1 2. 基本的流程:::getCfg内存对象, ...

  2. paip兼容windows与linux的java类根目录路径的方法

    paip兼容windows与linux的java类根目录路径的方法 1.只有 pathx.class.getResource("")或者pathx.class.getResourc ...

  3. paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型

    paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...

  4. java生成生成图片缩略图

    /** * */ package com.fkhwl.fkhserver.core.utils; import java.awt.Image; import java.awt.image.Buffer ...

  5. jQuery自动分页打印表格(HTMLtable),可以强制换页

    最近做项目的时候需要做批量打印订单,一个订单可能在最后一页是的内容是不足一页的,这时候下一个订单需要下一页打印,这样就需要强制换页.在下一页再打印下一个订单 部分代码: 部分重要的css是分页的换页的 ...

  6. node.js cluster多进程、负载均衡和平滑重启

    1 cluster多进程 cluster经过好几代的发展,现在已经比较好使了.利用cluster,可以自动完成子进程worker分配request的事情,就不再需要自己写代码在master进程中rob ...

  7. 使用 nc (Netcat) 建立傳送資料的 socket server

    原文:http://blog.longwin.com.tw/2012/02/nc-data-send-socket-server-2012/ 於 Debian / Ubuntu Linux 想要透過 ...

  8. asp.net MVC的EF与easyui DataGrid数据绑定

    页面代码 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewpor ...

  9. c# 字体安装

    [DllImport("kernel32.dll", SetLastError = true)] static extern int WriteProfileString(stri ...

  10. ASP lable标签显示过长,自动换行。

    <asp:Label ID="lab_BeforPostR" runat="server" CssClass="labSty" Wid ...