Spring+Mybatis+Maven+Mysql编程实战

封面是Niagara Falls,世界第一大瀑布。

概述

这篇文章主要讲解使用eclipse对Spring+Maven+Mybatis+Mysql项目搭建过程以及简单实战展示,对于eclipse的Maven配置以及Mysql的安装这里就不做介绍了,大家可以在百度上找找。

1.1 数据库表创建

CREATE TABLE student(
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
PRIMARY KEY (ID)
);

1.2 项目创建

  1. Maven工程创建

2.选择快速框架

3.输出项目名,包(Packaging,如果只是普通的项目,选jar就好了,如果是web项目就选war,这里是web项目,所以选择war)

4.创建好的项目目录如下:

1.3 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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sun</groupId> <artifactId>springMybatisTest</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <!-- spring版本号 --> <spring.version>4.1.6.RELEASE</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2.8</mybatis.version> </properties> <dependencies> <!-- 添加Spring依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!--mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- mybatis/spring包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <!-- mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.18</version> </dependency> <!-- dbcp数据库连接池 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> </dependencies> </project>

该pom.xml中已经标注了较清晰的注释,这里就不在详述了。

1.4 配置文件解析

(1) spring配置文件application.xml:

<!-- 数据库连接以及数据库连接池配置--> <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://10.168.175.14:3306/test"/> <property name="username" value="test"/> <property name="password" value="123"/> <property name="initialSize" value="3"/> </bean> <!-- mybatis config --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis/MybatisConfig.xml"></property> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <!-- database Dao config --> <bean id="daoImpl" class="com.sun.dao.DaoImpl"> <property name="sqlSession" ref="sqlSession" /> </bean>

(2) mybatis包下添加MybatisConfig.xml文件(mybatis配置文件):

<?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> <typeAliases> <typeAlias alias="Student" type="com.sun.entity.Student" /> </typeAliases> <mappers> <mapper resource="mapper/StudentMapper.xml"/> </mappers> </configuration>

(3) mapper包下StudentMapper.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="mapper.StudentMapper"> <!--配置一个resultMap 指定返回的类型 --> <resultMap id="studentMap" type="Student"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="age" property="age" /> </resultMap> <!-- 返回一个list的写法 --> <select id="listStudents" resultMap="studentMap" > select * from student </select> <select id="getStudent" parameterType="int" resultType="Student"> SELECT * FROM student WHERE id=#{id} </select> <insert id="insertStudent" parameterType="Student" flushCache="true"> INSERT INTO student (id,name,age) VALUES (#{id},#{name},#{age}) </insert> <update id="updateStudent" parameterType="Student"> UPDATE student SET age=#{age} WHERE id=#{id} </update> <delete id="deleteStudent" parameterType="int"> DELETE FROM student WHERE id=#{id} </delete> <delete id="deleteAllStudents"> DELETE FROM student </delete> </mapper>

1.5 接口和类介绍

(1) Dao.java接口介绍

package com.sun.dao; import java.util.List; publicinterface Dao { public List<Object> query(String sql,Object obj); publicvoid update(String sql, Object obj); }

该接口只包括两个方法,一个query()用来做查询,另一个update()用来做insert/update/delete操作。

(2) 接口实现类DaoImpl.java

package com.sun.dao; import java.util.List; import org.apache.ibatis.session.SqlSession; publicclass DaoImpl implements Dao { private SqlSession sqlSession; public SqlSession getSqlSession() { returnsqlSession; } publicvoid setSqlSession(SqlSession sqlSession) { this.sqlSession = sqlSession; } public List<Object> query(String sql, Object obj) { // TODO Auto-generated method stub returnsqlSession.selectList(sql, obj); } publicvoid update(String sql, Object obj) { // TODO Auto-generated method stub sqlSession.update(sql,obj); } }

(3) 数据库表映射类Student.java

package com.sun.entity; publicclass Student { privateintid; private String name; privateintage; public Student() { } public Student(intid, String name, intage) { this.id = id; this.name = name; this.age = age; } publicint getId() { returnid; } publicvoid setId(intid) { this.id = id; } public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } publicint getAge() { returnage; } publicvoid setAge(intage) { this.age = age; } @Override public String toString() { return"student: [id=" + id + " name=" + name + " age=" + age + "]"; } }

该类只有属性定义与其相应的get与set方法,是与数据库中的student表的字段对应的。

1.6 测试类与运行结果

(1) 测试类Student.java

package com.sun.test; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sun.dao.DaoImpl; import com.sun.entity.Student; publicclass MybatisTest { publicstaticvoid main( String[] args ) { //获取一个Spring bean的方式 ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); //在代码中加载Spring配置文件 DaoImpl daoImpl = (DaoImpl) context.getBean("daoImpl"); //利用Spring注入DB Dao的一个实例 Student stu = new Student(1,"luotj",24); //构建Student对象 //将构建的student实例插入MySQL的student表中 System.out.println("Insert student:"); daoImpl.update("mapper.StudentMapper.insertStudent", stu); //取出student表中的数据 List<Object> students = daoImpl.query("mapper.StudentMapper.listStudents", null); for(Object student:students) System.out.println(student); //更新student表中的数据 System.out.println("update student:"); stu.setAge(26); daoImpl.update("mapper.StudentMapper.updateStudent", stu); //再次取出student表中的数据,查看更新结果 students = daoImpl.query("mapper.StudentMapper.listStudents", null); for(Object student:students) System.out.println(student); //删除student表中的数据 daoImpl.update("mapper.StudentMapper.deleteAllStudents", null); } }

(2) 运行结果

1.7 小结

这篇文章侧重介绍Spring+Maven+Mybatis+Mysql的实战过程,而且配置文件与代码以及测试类都尽数提供给大家参考;之所以这样做,是为了给大家提供一个基于Spring与Mybatis框架的数据库编程的快速入门实战。

先调通一个简单的项目再来学习项目里的框架比先学习个把月的框架基础知识再写一个简单的项目让人更舒畅。而且很多时候,我们并不需要过于的深入研究一个框架,通过一个简单的项目了解其基本的使用规则,也许也就够了。

原文发布于微信公众号 - 大数据和云计算技术(jiezhu2007)

原文发表时间:2016-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闻道于事

SpringMVC 常用注解

1、@Controller      @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理...

2656
来自专栏老马说编程

(79) 方便的CompletionService / 计算机程序的思维逻辑

上节,我们提到,在异步任务程序中,一种常见的场景是,主线程提交多个异步任务,然后希望有任务完成就处理结果,并且按任务完成顺序逐个处理,对于这种场景,Java并发...

1719
来自专栏十月梦想

类的传参以及super属性和super对象

在上述例子我们也看到了指定的子类特有的方法直接指定,那么我们如何指定子类特有的属性呢?我们这里用到了super方法;

862
来自专栏Java进阶之路

java中String的一个小陷阱

1250
来自专栏Java爬坑系列

【Java入门提高篇】Day18 Java容器类详解(一)Collection接口

  所谓容器,就是专门用来装对象的东西,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体,但是集合类是容器类中的一个子集,为了区别表示,所...

22010
来自专栏Phoenix的Android之旅

如何用反射突破private方法的限制

反射作为Java的一个提高点,经常作为面试的内容之一。今天介绍一下最基本的反射的使用。 如何用反射来使用Class中的private方法。

792
来自专栏老码农专栏

原 荐 OSGL 工具库 - 类型转换的艺术

1433
来自专栏LuckQI

学习Java基础知识,打通面试关~十二接口与抽象类

924
来自专栏个人随笔

论 ArrayList如何实现线程安全

一:使用synchronized关键字 二:使用Collections.synchronizedList();         假如你创建的代码如下:List<...

33314
来自专栏java初学

spring框架(1)— 依赖注入

44612

扫码关注云+社区