IDEA中集成struts2+mybatis

本文介绍如何在Struts项目中集成MyBatis进行数据库操作。通过具体步骤展示配置MyBatis、创建Mapper文件及操作数据库的过程。

上一篇文章介绍了在IDEA中使用struts搭建一个简单的web项目,这篇文章主要引入mybatis,实现对db的操作,仅供参考。

为什么是Mybatis

选择mybatis主要有两个原因:
1. 之前任职过的一家比较大的互联网公司使用的就是mybatis,所以从稳定性和流行程度的角度来说肯定没问题;
2. 入手比较简单,一小时即可;

版本&jar包

struts2:2.3.31
(见http://blog.youkuaiyun.com/hfut_wowo/article/details/62887855
Mybatis:3.4.2
JDBC:5.1.39

开始

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mappers/CustomerInfoMapper.xml"/>
    </mappers>
</configuration>
  • 创建Mapper文,mappers/CustomerInfoMapper.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="CustomerInfoMapper">
    <select id="selectCustomerByBankID" parameterType="map" resultType="test.DO.CustomerInfoDO">
        select * from customer_info where `bank_id` = #{bank_id} limit 1
    </select>
</mapper>
  • 创建操作工具类,DBOperateUtil:
package test.util;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class DBOperateUtil {
    private SqlSessionFactory ssf;
    private static final DBOperateUtil dbou = new DBOperateUtil();

    public DBOperateUtil() {
        try {
            String resource = "MybatisConfig.xml";
            InputStream inputStream;
            inputStream = Resources.getResourceAsStream(resource);
            ssf = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static DBOperateUtil getInstance() {
        return dbou;
    }

    public SqlSessionFactory getSsf() {
        return ssf;
    }

    public void setSsf(SqlSessionFactory ssf) {
        this.ssf = ssf;
    }
}
  • 创建DO文件:
package test.DO;

public class CustomerInfoDO {
    private String bank_id;
    private int id;

    public String getBank_id() {
        return bank_id;
    }

    public void setBank_id(String bank_id) {
        this.bank_id = bank_id;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
  • 在action中操作DB:
package test.action;

import org.apache.ibatis.session.SqlSession;
import test.DO.CustomerInfoDO;
import test.util.DBOperateUtil;

public class TestAction {
    private CustomerInfoDO customerInfoDO;

    public String execute() {
        SqlSession session = DBOperateUtil.getInstance().getSsf().openSession();
        CustomerInfoDO customerInfoDO = session.selectOne("CustomerInfoMapper.selectCustomerByBankID", "中国工商银行");
        this.setCustomerInfoDO(customerInfoDO);
        return "success";
    }

    public CustomerInfoDO getCustomerInfoDO() {
        return customerInfoDO;
    }

    public void setCustomerInfoDO(CustomerInfoDO customerInfoDO) {
        this.customerInfoDO = customerInfoDO;
    }
}
  • 在视图文件中显示从DB查出来的数据:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <s:property value="customerInfoDO.bank_id"/>
  ${customerInfoDO.bank_id}
  </body>
</html>

上面的视图中采用了两种方式输出内容,最终的结果页面如下:
这里写图片描述

注:Mysql中数据表:

customer_info | CREATE TABLE `customer_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `bank_id` varchar(36) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值