1.创建maven 项目------选着模板maven-arcgetype-webapp
把模板缺的文件补上
ctrl 一个一个选上回车
这就补齐了。
2.加入依赖---
spring springmvs 这两个主要需要
<!-- springmvc里面有五个必须的依赖。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.4</version> </dependency>
<!-- Spring-tx 事务
spring-jdbc 里面含有spring-tx
所以spring-tx可以不加
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.4</version>
</dependency>
Mybatis 和mybstis-spring
<!-- DAO框架:MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.0.1</version>
</dependency>
<!-- Mybatis自身实现的Spring整合依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
mysql连接驱动
<!--jdbc-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
servlet:
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
偷懒专属lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
添加日志:
<!--log4j-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
3.创建数据库,并手动添入数据
CREATE DATABASE mydb ;
USE mydb;
CREATE TABLE person
(
ID INT NOT NULL,
NAME VARCHAR(20),
birthday DATE,
salary DECIMAL(10,2)
);
创建基本目录 根据数据库建立实体类:Person
package com.wdzl.bean; import lombok.Data; import java.util.Date; /** * @version 1.0 * @Description * @Author JR. */ @Data public class Person { private Integer id; private String name; private Date birthday; private Double salary; }
dao层 ------ PensonDao接口:
package com.wdzl.dao;
import com.wdzl.bean.Person;
import java.util.List;
public interface PersonDao {
int insert(Person person);
int update(Person person);
int delete(Integer id);
Person findBy(Integer id);
List<Person> findAll();
}
在resources下将 mappe r包放入PersonMapper.xml
通过 PersonMapper.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.wdzl.dao.PersonDao">
<resultMap id="BaseResultMap" type="com.wdzl.bean.Person">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="birthday" property="birthday" jdbcType="DATE"/>
<result column="salary" property="salary" jdbcType="DOUBLE"/>
</resultMap>
<sql id="Base_Column_List">
id
, name, birthday, salary
</sql>
<select id="findById" resultMap="BaseResultMap" parameterType="java.lang.Integer">
select
<include refid="Base_Column_List"/>
from Person
where id = #{id,jdbcType=INTEGER}
</select>
<select id="findAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from Person
</select>
<insert id="insert" parameterType="com.wdzl.bean.Person">
insert into Person (id,
name,
birthday,
salary)
values (#{id,jdbcType=INTEGER},
#{name,jdbcType=VARCHAR},
#{birthday,jdbcType=DATE},
#{salary,jdbcType=DOUBLE})
</insert>
<update id="update" parameterType="com.wdzl.bean.Person">
update Person
set name = #{name,jdbcType=VARCHAR},
birthday = #{birthday,jdbcType=DATE},
salary = #{salary,jdbcType=DOUBLE}
where id = #{id,jdbcType=INTEGER}
</update>
<delete id="delete" parameterType="java.lang.Integer">
delete
from Person
where id = #{id,jdbcType=INTEGER}
</delete>
</mapper>
spring配置文件 applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
">
<!--1.DataSource-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!--2.Mybatis和spring的结合-->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath*:mapper/*.xml"></property>
</bean>
<!--Dao的扫描-->
<!-- 3、DAO接口所在包名,Spring会自动查找其下的类 -->
<bean id="mapperScannerConfigurer"
class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.wdzl.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
log4j2.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置LoggerConfig,即Appenders的日志级别为WARN -->
<Configuration status="info">
<!-- Appenders支持配置多个Appender,支持向不同的目标输送日志,本例为配置向控制台输出 -->
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%-5level [%d{yyyy/MM/dd HH:mm:ss.SSS}] [%t] %logger{36} \n\t%msg %n\n" />
</Console>
</Appenders>
<!-- Loggers支持配置多个Logger,可引用不同的目标Appender,也可根据业务需求定制特定要求的Appender -->
<Loggers>
<Root level="info">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
测试 容器
/**
* @version 1.0
* @Description
* @Author JR.
*/
public class AcTest {
private static final Log log = LogFactory.getLog(AcTest.class);
private ApplicationContext applicationContext;
@Before
public void info(){
applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//测试容器
log.info(applicationContext);
}
@Test
public void dataSourceTest(){
//测试dataSource
DriverManagerDataSource dataSource = (DriverManagerDataSource) applicationContext.getBean("dataSource");
log.info(dataSource);
}
@Test
public void sqlSessionFactoryTest(){
//测试sqlSessionFactory
SqlSessionFactory sqlSessionFactory = (SqlSessionFactory)applicationContext.getBean("sqlSessionFactory");
log.info(sqlSessionFactory);
}
@Test
public void mapperScannerConfigurerTest(){
//测试mapperScannerConfigurer
MapperScannerConfigurer mapperScannerConfigurer = (MapperScannerConfigurer)applicationContext.getBean("mapperScannerConfigurer");
log.info(mapperScannerConfigurer);
}
}
测试连接数据库:
package com.wdzl.dao;
import com.wdzl.bean.Person;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
import static org.junit.Assert.*;
public class PersonDaoTest {
private static final Log log = LogFactory.getLog(PersonDaoTest.class);
private ApplicationContext applicationContext;
@Before
public void info() {
applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//测试容器
log.info(applicationContext);
}
@Test
public void findAll(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
log.info( applicationContext );
PersonDao personMapper = applicationContext.getBean("personDao",PersonDao.class);
log.info( personMapper );
List<Person> persons = personMapper.findAll();
System.out.println(persons);
}
}