java dao层实现_MyBatis开发Dao层的两种方式实现(原始Dao层开发)

本文介绍了如何使用MyBatis框架3.2.7版本开发DAO层,涉及SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession的使用。通过创建user类,配置sqlmapconfig.xml和user.xml映射文件,实现userDAO接口及其实现类,最后通过JUnit测试类进行功能验证。详细步骤包括:添加依赖、配置日志、创建数据模型、配置文件、映射文件、DAO接口及实现、测试类等。
摘要由CSDN通过智能技术生成

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

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

sqlsession使用范围

sqlsessionfactorybuilder

通过sqlsessionfactorybuilder创建会话工厂sqlsessionfactory

将sqlsessionfactorybuilder当成一个工具类使用即可,不需要使用单例管理sqlsessionfactorybuilder。

在需要创建sqlsessionfactory时候,只需要new一次sqlsessionfactorybuilder即可。

sqlsessionfactory

通过sqlsessionfactory创建sqlsession,使用单例模式管理sqlsessionfactory(工厂一旦创建,使用一个实例)。

将来mybatis和spring整合后,使用单例模式管理sqlsessionfactory。

sqlsession

sqlsession是一个面向用户(程序员)的接口。

sqlsession中提供了很多操作数据库的方法:如:selectone(返回单个对象)、selectlist(返回单个或多个对象)、。

sqlsession是线程不安全的,在sqlsesion实现类中除了有接口中的方法(操作数据库的方法)还有数据域属性。

sqlsession最佳应用场合在方法体内,定义成局部变量使用。

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

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类

package com.xyfer.po;

import java.util.date;

/**

*

* @author xyfer

* 数据封装使用的user类

*

*/

public class user {

private int id; //id

private string username; //姓名

private string sex; //性别

private date birthday; // 生日

private string address; // 地址

public int getid() {

return id;

}

public void setid(int id) {

this.id = id;

}

public string getusername() {

return username;

}

public void setusername(string username) {

this.username = username;

}

public string getsex() {

return sex;

}

public void setsex(string sex) {

this.sex = sex;

}

public date getbirthday() {

return birthday;

}

public void setbirthday(date birthday) {

this.birthday = birthday;

}

public string getaddress() {

return address;

}

public void setaddress(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层接口

package com.xyfer.dao;

import com.xyfer.po.user;

public interface userdao {

public user getuserbyid(int id); //根据id值查询一个用户

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

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

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

}

dao层接口实现类

package com.xyfer.dao.impl;

import org.apache.ibatis.session.sqlsession;

import org.apache.ibatis.session.sqlsessionfactory;

import com.xyfer.dao.userdao;

import com.xyfer.po.user;

public class userdaoimpl implements userdao {

//注入sqlsessionfactory

public userdaoimpl(sqlsessionfactory sqlsessionfactory){

this.setsqlsessionfactory(sqlsessionfactory);

}

private sqlsessionfactory sqlsessionfactory;

public sqlsessionfactory getsqlsessionfactory() {

return sqlsessionfactory;

}

public void setsqlsessionfactory(sqlsessionfactory sqlsessionfactory) {

this.sqlsessionfactory = sqlsessionfactory;

}

@override

public user getuserbyid(int id) {

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();

}

return user;

}

@override

public void insertuser(user user) {

sqlsession sqlsession = sqlsessionfactory.opensession();

try {

sqlsession.insert("test.insertuser", user);

sqlsession.commit();

} finally{

sqlsession.close();

}

}

@override

public void updateuser(user user) {

sqlsession sqlsession = sqlsessionfactory.opensession();

try {

sqlsession.update("test.updateuser", user);

sqlsession.commit();

} finally{

sqlsession.close();

}

}

@override

public void deleteuser(int id) {

sqlsession sqlsession = sqlsessionfactory.opensession();

try {

sqlsession.update("test.deleteuserbyid", id);

sqlsession.commit();

} finally{

sqlsession.close();

}

}

}

8、创建一个junit的测试类,对userdao进行测试。

package com.xyfer.dao.impl;

import static org.junit.assert.*;

import java.io.inputstream;

import java.util.date;

import org.apache.ibatis.io.resources;

import org.apache.ibatis.session.sqlsessionfactory;

import org.apache.ibatis.session.sqlsessionfactorybuilder;

import org.junit.before;

import org.junit.test;

import com.xyfer.dao.userdao;

import com.xyfer.po.user;

public class userdaoimpltest {

private sqlsessionfactory sqlsessionfactory;

@before

public void init() throws exception {

sqlsessionfactorybuilder sessionfactorybuilder = new sqlsessionfactorybuilder();

inputstream inputstream = resources.getresourceasstream("sqlmapconfig.xml");

sqlsessionfactory = sessionfactorybuilder.build(inputstream);

}

@test

public void testgetuserbyid() {

userdao userdao = new userdaoimpl(sqlsessionfactory);

user user = userdao.getuserbyid(22);

system.out.println(user);

}

@test

public void testinsertuser() {

user user = new user();

user.setusername("小李");

user.setsex("男");

user.setbirthday(new date());

user.setaddress("杭州市");

userdao userdao = new userdaoimpl(sqlsessionfactory);

userdao.insertuser(user);

}

@test

public void testupdateuser() {

user user = new user();

user.setid(10);

user.setusername("小威");

user.setsex("男");

user.setbirthday(new date());

user.setaddress("杭州市");

userdao userdao = new userdaoimpl(sqlsessionfactory);

userdao.updateuser(user);

}

@test

public void testdeleteuser() {

userdao userdao = new userdaoimpl(sqlsessionfactory);

userdao.deleteuser(10);

}

}

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

需要注意的是,上文提到的config文件夹和sqlmapper文件夹均为资源文件夹(source folder),默认会加载该路径下的文件。希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值