mybatis mysql Dao_MyBatis开发Dao层的两种方式(原始Dao层开发)

本文将介绍使用框架mybatis开发原始Dao层来对一个对数据库进行增删改查的案例。

本次使用的mybatis版本为mybatis-3.2.7,开发工具为eclipse,数据库为mysql,jdk版本jdk1.8.0_151。

1、首先,使用eclipse新建一个java工程,在lib目录下加入mybatis核心包、依赖包、数据驱动包,然后BuildPath一下。。

8ec004a3baf6635c395ec1b7bf4e65ea.png

2、添加日志文件,在classpath下创建log4j.properties如下:

# Global logging configuration

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

3、在classpath下创建config资源文件夹,并在config文件夹下创建SqlMapConfig.xml,如下:

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

SqlMapConfig.xml是mybatis核心配置文件,上边文件的配置内容为数据源、事务管理。

4、创建数据封装使用的User类

packagecom.xyfer.po;importjava.util.Date;/***

*@authorxyfer

* 数据封装使用的User类

**/

public classUser {private int id; //id

private String username; //姓名

private String sex; //性别

private Date birthday; //生日

private String address; //地址

public intgetId() {returnid;

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

}publicString getUsername() {returnusername;

}public voidsetUsername(String username) {this.username =username;

}publicString getSex() {returnsex;

}public voidsetSex(String sex) {this.sex =sex;

}publicDate getBirthday() {returnbirthday;

}public voidsetBirthday(Date birthday) {this.birthday =birthday;

}publicString getAddress() {returnaddress;

}public voidsetAddress(String address) {this.address =address;

}

}

5、在classpath下的资源文件夹sqlmapper目录下创建sql映射文件User.xml:

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from user where id = #{id}

select LAST_INSERT_ID()insert into user(username,birthday,sex,address)

values(#{username},#{birthday},#{sex},#{address})

update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}

where id=#{id}

delete from user where id=#{id}

6、mybatis框架需要加载映射文件,将Users.xml添加在SqlMapConfig.xml,如下:

7、dao层接口

packagecom.xyfer.dao;importcom.xyfer.po.User;public interfaceUserDao {public User getUserById(int id); //根据id值查询一个用户

public void insertUser(User user); //新增一个用户

public void updateUser(User user); //修改一个用户

public void deleteUser(int id); //删除一个用户

}

dao层接口实现类

packagecom.xyfer.dao.impl;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importcom.xyfer.dao.UserDao;importcom.xyfer.po.User;public class UserDaoImpl implementsUserDao {//注入SqlSessionFactory

publicUserDaoImpl(SqlSessionFactory sqlSessionFactory){this.setSqlSessionFactory(sqlSessionFactory);

}privateSqlSessionFactory sqlSessionFactory;publicSqlSessionFactory getSqlSessionFactory() {returnsqlSessionFactory;

}public voidsetSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {this.sqlSessionFactory =sqlSessionFactory;

}

@Overridepublic User getUserById(intid) {

SqlSession session=sqlSessionFactory.openSession();

User user= null;try{//通过sqlsession调用selectOne方法获取一条结果集//参数1:指定定义的statement的id,参数2:指定向statement中传递的参数

user = session.selectOne("test.findUserById", 1);

System.out.println(user);

}finally{

session.close();

}returnuser;

}

@Overridepublic voidinsertUser(User user) {

SqlSession sqlSession=sqlSessionFactory.openSession();try{

sqlSession.insert("test.insertUser", user);

sqlSession.commit();

}finally{

sqlSession.close();

}

}

@Overridepublic voidupdateUser(User user) {

SqlSession sqlSession=sqlSessionFactory.openSession();try{

sqlSession.update("test.updateUser", user);

sqlSession.commit();

}finally{

sqlSession.close();

}

}

@Overridepublic void deleteUser(intid) {

SqlSession sqlSession=sqlSessionFactory.openSession();try{

sqlSession.delete("test.deleteUserById", id);

sqlSession.commit();

}finally{

sqlSession.close();

}

}

}

8、创建一个JUnit的测试类,对UserDao进行测试。

packagecom.xyfer.dao.impl;import static org.junit.Assert.*;importjava.io.InputStream;importjava.util.Date;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;importorg.junit.Before;importorg.junit.Test;importcom.xyfer.dao.UserDao;importcom.xyfer.po.User;public classUserDaoImplTest {privateSqlSessionFactory sqlSessionFactory;

@Beforepublic void init() throwsException {

SqlSessionFactoryBuilder sessionFactoryBuilder= newSqlSessionFactoryBuilder();

InputStream inputStream= Resources.getResourceAsStream("SqlMapConfig.xml");

sqlSessionFactory=sessionFactoryBuilder.build(inputStream);

}

@Testpublic voidtestGetUserById() {

UserDao userDao= newUserDaoImpl(sqlSessionFactory);

User user= userDao.getUserById(22);

System.out.println(user);

}

@Testpublic voidtestInsertUser() {

User user= newUser();

user.setUsername("小李");

user.setSex("男");

user.setBirthday(newDate());

user.setAddress("杭州市");

UserDao userDao= newUserDaoImpl(sqlSessionFactory);

userDao.insertUser(user);

}

@Testpublic voidtestUpdateUser() {

User user= newUser();

user.setId(10);

user.setUsername("小威");

user.setSex("男");

user.setBirthday(newDate());

user.setAddress("杭州市");

UserDao userDao= newUserDaoImpl(sqlSessionFactory);

userDao.updateUser(user);

}

@Testpublic voidtestDeleteUser() {

UserDao userDao= newUserDaoImpl(sqlSessionFactory);

userDao.deleteUser(10);

}

}

以上步骤,完成使用mybatis框架开发原始dao层,并对数据库进行增删改查操作。

需要注意的是,上文提到的config文件夹和sqlmapper文件夹均为资源文件夹(source folder),默认会加载该路径下的文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接来得到预测值。其网络结构通常包含多个卷积和全连接,通过卷积提取图像特征,通过全连接输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接来得到预测值。其网络结构通常包含多个卷积和全连接,通过卷积提取图像特征,通过全连接输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值