Spring+Mybatis+Maven+Mysql编程实战

时间:2022-05-03
本文章向大家介绍Spring+Mybatis+Maven+Mysql编程实战,主要内容包括概述、1.1 数据库表创建、1.2 项目创建、1.3 pom.xml配置依赖包、1.4 配置文件解析、1.5 接口和类介绍、1.6 测试类与运行结果、1.7 小结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

封面是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框架的数据库编程的快速入门实战。

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