搭建maven+spring+mybatis工程

来源:互联网 发布:游戏俱乐部书生数据 编辑:程序博客网 时间:2024/05/16 08:55
一、maven 命令搭建web项目

可以参考我之前的一篇博文maven快速入门

 1、搭建web工程

mvn archetype:generate -DgroupId=com.yuanmeng.springdemo -DartifactId=spring-mybatis -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

 2、pom配置

<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.yuanmeng.springdemo</groupId>  <artifactId>spring-mybatis</artifactId>  <packaging>war</packaging>  <version>1.0-SNAPSHOT</version>  <name>spring Maven Webapp</name>  <url>http://maven.apache.org</url>      <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <spring.version>4.1.4.RELEASE</spring.version>        <jackson.version>2.5.0</jackson.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-beans</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</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-web</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-jdbc</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${spring.version}</version>            <scope>test</scope>        </dependency>        <!-- mybatis 包 -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.2.8</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.34</version>        </dependency>        <!-- 数据源 -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.0.12</version>        </dependency>        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjweaver</artifactId>            <version>1.8.4</version>        </dependency>        <!-- log4j -->        <dependency>            <groupId>log4j</groupId>            <artifactId>log4j</artifactId>            <version>1.2.17</version>        </dependency>        <!-- servlet -->        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>servlet-api</artifactId>            <version>3.0-alpha-1</version>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>jstl</artifactId>            <version>1.2</version>        </dependency>        <!-- json -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.2.3</version>        </dependency>       <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>            <scope>test</scope>    </dependency>  </dependencies>  <build>    <finalName>spring-mybatis</finalName>  </build></project>

 

 3、切换到工程根目录下,执行 mvn eclipse:eclipse。将maven工程转为eclipse工程,然后在eclipse导入工程

二、创建表

 登录 mysql -uroot -p use testdb 创建表 create table user_info(  id int(16) not null primary key auto_increment,  name varchar(32) not null,  password varchar(32) not null);

三、自动生成dao、do、mapper xml配置

可以参考我之前的一篇博文mybatis-generator-core自动生成do、mapping、dao 代码

四、代码结构

dao 

public interface UserInfoMapper {    int deleteByPrimaryKey(Long id);    int insert(UserInfo record);    int insertSelective(UserInfo record);    UserInfo selectByPrimaryKey(Integer id);    int updateByPrimaryKeySelective(UserInfo record);    int updateByPrimaryKey(UserInfo record);}
View Code

 do

public class UserInfo {    private int id;    private String name;    private String password;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name == null ? null : name.trim();    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password == null ? null : password.trim();    }}
View Code

service

public interface UserService {    UserInfo getUserInfoById(int id);}@Service("userService")public class UserServiceImpl implements UserService {    @Resource(name="userInfoMapper")    private UserInfoMapper userInfoMapper;        @Override    public UserInfo getUserInfoById(int id) {                return userInfoMapper.selectByPrimaryKey(id);    }}
View Code

 五、文件配置

userInfoMapper.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.yuanmeng.springdemo.dao.UserInfoMapper" >  <resultMap id="BaseResultMap" type="com.yuanmeng.springdemo.model.UserInfo" >    <id column="id" property="id" jdbcType="INTEGER" />    <result column="name" property="name" jdbcType="VARCHAR" />    <result column="password" property="password" jdbcType="VARCHAR" />  </resultMap>  <sql id="Base_Column_List" >    id, name, password  </sql>  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >    select     <include refid="Base_Column_List" />    from user_info    where id = #{id,jdbcType=INTEGER}  </select>  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >    delete from user_info    where id = #{id,jdbcType=INTEGER}  </delete>  <insert id="insert" parameterType="com.yuanmeng.springdemo.model.UserInfo" >    insert into user_info (id, name, password      )    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}      )  </insert>  <insert id="insertSelective" parameterType="com.yuanmeng.springdemo.model.UserInfo" >    insert into user_info    <trim prefix="(" suffix=")" suffixOverrides="," >      <if test="id != null" >        id,      </if>      <if test="name != null" >        name,      </if>      <if test="password != null" >        password,      </if>    </trim>    <trim prefix="values (" suffix=")" suffixOverrides="," >      <if test="id != null" >        #{id,jdbcType=INTEGER},      </if>      <if test="name != null" >        #{name,jdbcType=VARCHAR},      </if>      <if test="password != null" >        #{password,jdbcType=VARCHAR},      </if>    </trim>  </insert>  <update id="updateByPrimaryKeySelective" parameterType="com.yuanmeng.springdemo.model.UserInfo" >    update user_info    <set >      <if test="name != null" >        name = #{name,jdbcType=VARCHAR},      </if>      <if test="password != null" >        password = #{password,jdbcType=VARCHAR},      </if>    </set>    where id = #{id,jdbcType=INTEGER}  </update>  <update id="updateByPrimaryKey" parameterType="com.yuanmeng.springdemo.model.UserInfo" >    update user_info    set name = #{name,jdbcType=VARCHAR},      password = #{password,jdbcType=VARCHAR}    where id = #{id,jdbcType=INTEGER}  </update></mapper>
View Code

 

 config.properties

validationQuery=SELECT 1jdbc.url=jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8jdbc.username=rootjdbc.password=root
View Code

 

spring.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" xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/beans            http://www.springframework.org/schema/beans/spring-beans-4.1.xsd            http://www.springframework.org/schema/context            http://www.springframework.org/schema/context/spring-context-4.1.xsd">    <!--引入配置属性文件 -->    <context:property-placeholder location="classpath:config.properties" />    <!--自动扫描含有@Service将其注入为bean -->    <context:component-scan base-package="com.yuanmeng.springdemo.service" /></beans>
View Code

 

spring-mybatis.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" xmlns:tx="http://www.springframework.org/schema/tx"    xmlns:aop="http://www.springframework.org/schema/aop"    xsi:schemaLocation="        http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-4.1.xsd         http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx-4.1.xsd        http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop-4.1.xsd        ">    <!-- 配置数据源 使用的是Druid数据源 -->    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"        init-method="init" destroy-method="close">        <property name="url" value="${jdbc.url}" />        <property name="username" value="${jdbc.username}" />        <property name="password" value="${jdbc.password}" />        <!-- 初始化连接大小 -->        <property name="initialSize" value="0" />        <!-- 连接池最大使用连接数量 -->        <property name="maxActive" value="20" />                <!-- 连接池最小空闲 -->        <property name="minIdle" value="0" />        <!-- 获取连接最大等待时间 -->        <property name="maxWait" value="60000" />        <property name="poolPreparedStatements" value="true" />        <property name="maxPoolPreparedStatementPerConnectionSize"            value="33" />        <!-- 用来检测有效sql -->        <property name="validationQuery" value="${validationQuery}" />        <property name="testOnBorrow" value="false" />        <property name="testOnReturn" value="false" />        <property name="testWhileIdle" value="true" />        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->        <property name="timeBetweenEvictionRunsMillis" value="60000" />        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->        <property name="minEvictableIdleTimeMillis" value="25200000" />        <!-- 打开removeAbandoned功能 -->        <property name="removeAbandoned" value="true" />        <!-- 1800秒,也就是30分钟 -->        <property name="removeAbandonedTimeout" value="1800" />        <!-- 关闭abanded连接时输出错误日志 -->        <property name="logAbandoned" value="true" />        <!-- 监控数据库 -->        <property name="filters" value="mergeStat" />    </bean>    <!-- myBatis文件 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource" />        <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->        <property name="mapperLocations" value="classpath:com/yuanmeng/springdemo/mapping/*.xml" />    </bean>    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="com.yuanmeng.springdemo.dao" />        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />    </bean>        <!-- 配置druid监控spring jdbc -->    <bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">    </bean>    <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">        <property name="patterns">            <list>                <value>com.yuanmeng.springdemo.service.*</value>            </list>        </property>    </bean>    <aop:config>        <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />    </aop:config></beans>
View Code

 

六、test

方法一 : 使用Spring提供的Junit测试框架进行单元测试

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath:spring.xml",    "classpath:spring-mybatis.xml" })public class TestUserService {    private static final Logger LOGGER = Logger.getLogger(TestUserService.class);    @Resource(name="userService")    private UserService userService;        @Test    public void testGetUserInfoById() {        UserInfo userInfo = userService.getUserInfoById(1);        LOGGER.info(JSON.toJSON(userInfo));    }}

 

 方法二 : 使用Junit测试框架进行单元测试

public class TestUserService2 {    private static final Logger LOGGER = Logger.getLogger(TestUserService2.class);    private UserService userService;        @Before    public void init() {        @SuppressWarnings("resource")        ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"spring.xml","spring-mybatis.xml"});        userService = (UserService) ac.getBean("userService");    }            @Test    public void testGetUserInfoById() {        UserInfo userInfo = userService.getUserInfoById(1);        LOGGER.info(JSON.toJSON(userInfo));    }}

 

0 0
原创粉丝点击