servlet+mybatis 集成web工程

之前使用servlet+jdbc搭建web工程,现在通过jmybatis框架在持久化

jar包
mybatis-3.4.6.jar;
mysql-connector-java-5.1.21.jar

工程
1、配置mybatis配置文件mybatis-config.xml (包含配置datasource+mapper)
mybatis事务类型有两种:jdbc和managed(web容器管理事务)
关于mybatis如何实现事务,参考这个帖子,说的挺详细:

https://blog.csdn.net/masusan/article/details/70835062

<?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://localhost:3306/test?useUnicode=true"/> 
                    <property name="username" value="root" /> 
                    <property name="password" value="123456" /> 
                </dataSource> 
        </environment> 
    </environments>
    <mappers> 
        <!-- 映射文件方式1,一个一个的配置 --> 
        <mapper resource="com/test/mybatis/dao/UserDaoMapper.xml"/> 
            <!-- 映射文件方式2,自动扫描包内的Mapper接口与配置文件 <package name="com/songci/mybatis/mapper"/>--> 
    </mappers> 
</configuration>

持久化接口(UserDao.java)

/**
 * 
 */
package com.test.mybatis.dao;

import java.util.List;
import com.test.mybatis.domain.User;

/**
 * @author 44306
 *
 */
public interface UserDao 
{
    List<User> queryUser();
}

对应的UserDaoMapper.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"> 
<!-- 首先来解析 namespace: 命名空间,此属性通常用来映射Dao层接口. --> 
<mapper namespace="com.test.mybatis.dao.UserDao"> 
<!-- id: 对应Dao层接口方法名 parameterType:指定输入参数类型 --> 
<!-- useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中 --> 
    <select id="queryUser" resultType="com.test.mybatis.domain.User">
        select * from Users 
    </select>
 </mapper>

实体类(User.java)

/**
 * 
 */
package com.test.mybatis.domain;

/**
 * @author 44306
 *
 */
public class User 
{
    private String id;

    private String userName;

    private String passwd;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPasswd() {
        return passwd;
    }

    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", userName=" + userName + ", passwd="
                + passwd + "]";
    }



}

控制层类(HelloServlet.java)

/**
 * 
 */
package com.test.mybatis.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.List;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

import com.test.mybatis.dao.UserDao;
import com.test.mybatis.domain.User;

/**
 * @author 44306
 *
 */
@WebServlet(name="testServlet", urlPatterns={"/test/testServlet"},loadOnStartup=1)
public class HelloServlet extends HttpServlet
{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;



    public void doGet(HttpServletRequest request,HttpServletResponse resp)
    {
        // 1、读取配置文件
        String resource = "mybatis-config.xml"; 
        URL o = Thread.currentThread().getContextClassLoader().getResource("");
        String path = o.getPath().replace("classes", "config"); 


        InputStream inputStream;
        try {
            inputStream = new FileInputStream(new File(path+resource));

            // 2、根据配置文件创建SqlSessionFactory

            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            // 3、SqlSessionFactory创建SqlSession
            /** *2: 从mybatis 数据连接池中获取 session连接 * 并选择相应的接口类《mapper》 */ 
            //如果sqlsessionFactory.opensession(true)参数是布尔值,如果设置为true,就不需要commit提交事务了
            SqlSession session = sqlSessionFactory.openSession(); 
            UserDao sutdentDao = (UserDao) session.getMapper(UserDao.class); 
            List<User> list = sutdentDao.queryUser();
            System.out.println(list.get(0).toString());
            //3:提交事务 仅在【保存数据 删除数据 更新数据】 
            session.commit(); 
            //4:关闭session连接 ---放回至mybatis维护连接池中
            session.close();
        } catch (IOException e) {
            System.out.println("报错啦!!"+e.getMessage());
        } 

    }
}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值