2.Mybatis两种开发模式

普通模式

自定义接口,接口实现类。

思考:需要sqlSessionFactory,生产sqlSession。

UserDao:

package dao;

import java.util.List;
import domain.User;

public interface UserDao {
	//根据Id查询用户
	public User findUserByID(Integer id);
	//根据用户名进行模糊查询
	public List<User> findUserByUsername(String username);

}

UserDaoImpl:

package dao.impl;

import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import dao.UserDao;
import domain.User;

public class UserDaoImpl implements UserDao{

	//namespace
	private String ns="test.";

	private SqlSessionFactory sqlSessionFactory;
	public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
		this.sqlSessionFactory=sqlSessionFactory;
	}

	public User findUserByID(Integer id) {
		SqlSession sqlSession=sqlSessionFactory.openSession();
		User user = sqlSession.selectOne(ns+"findUserByID",id);

		return user;
	}

	public List<User> findUserByUsername(String username) {
		SqlSession sqlSession=sqlSessionFactory.openSession();
		List<User> list=sqlSession.selectList(ns+"findUserByUsername", username);

		return list;
	}
}

Main3:

package test;

import static org.hamcrest.CoreMatchers.nullValue;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
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 org.junit.Before;
import org.junit.Test;
import dao.UserDao;
import dao.impl.UserDaoImpl;
import domain.User;

public class Main3 {

	SqlSessionFactory sqlSessionFactory=null;

	@Before
	public void beforeConf() throws IOException{
		String resources="sqlMapConfig.xml";
		InputStream inputStream=Resources.getResourceAsStream(resources);
		sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

	}

	//普通dao开发模式
	@Test
	public void commonDao(){
		UserDao userDao=new UserDaoImpl(sqlSessionFactory);
		//根据Id查询用户
		User user1 = userDao.findUserByID(16);
		System.out.println("user1:::"+user1);

		//根据名字模糊查询用户
		List<User> list = userDao.findUserByUsername("张");
		System.out.println(list);
	}
}

  

接口代理开发模式

自需要定义接口。

开发约定:

l 映射文件namespace必须是接口全类路径名。

l 映射文件的Statement的id必须和接口的方法名一致。

sqlMapConfig.xml:

<?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 -->
<configuration>
	<!-- 可以配置多个运行环境,但是每个 SqlSessionFactory 实例只能选择一个运行环境
	  一、development:开发模式
	   二、work:工作模式-->
	<environments default="development">
		 <!--id属性必须和上面的default一样  -->
		<environment id="development">
			<!-- mybatis事务管理器 ,由jdbc管理-->
			<transactionManager type="JDBC"/>
			<!--  mybatis连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql:///mybatis01"/>
				<property name="username" value="root"/>
				<property name="password" value="moujinling321"/>
			</dataSource>
		</environment>
	</environments>
	<!-- 引入外部映射文件 -->
	<mappers>
		<mapper resource="sqlMap/User.xml"/>
	</mappers>
</configuration>

User.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">
<!--
	MyBatis映射文件的开始标签 ,所有sql语句全部封装在mapper里面
	namespace:命名空间
		*隔离不同的映射文件,映射文件的唯一标识,可以任意命名
		*在接口代理开发中,namespace具有特殊含义,不能任意命名
			namespace需要写接口的全路径
	-->
<mapper namespace="dao.UserMapper">
	<!-- statement的id必须和接口中的方法名相同 -->
	<select id="findUserByID" parameterType="int" resultType="domain.User">
		select * from user where id=#{id}
	</select>

	<select id="findUserByUsername" resultType="domain.User" parameterType="string">
		select * from user where username like ‘%${value}%‘
	</select>

</mapper>

UserMapper:

package dao;

import java.util.List;
import domain.User;

public interface UserMapper {
	//根据Id查询用户
	public User findUserByID(Integer id);
	//根据用户名进行模糊查询
	public List<User> findUserByUsername(String username);

}

Main1:

package test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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 org.junit.Before;
import org.junit.Test;
import dao.UserMapper;
import domain.User;

public class Main1 {
	SqlSessionFactory sqlSessionFactory=null;

	@Before
	public void beforeConf() throws IOException{
		String resources = "sqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resources);
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}

	//接口代理开发模式
	@Test
	public void proxyInterface(){
		SqlSession sqlSession=sqlSessionFactory.openSession();

		//获取代理对象
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		//根据Id查询
		User user = userMapper.findUserByID(24);
		System.out.println(user);

		//根据用户名进行模糊查询
		List<User> users=userMapper.findUserByUsername("张");
		System.out.println(users);
	}
}

  

  

  

 

  

原文地址:https://www.cnblogs.com/syj1993/p/8605899.html

时间: 2024-07-28 12:54:07

2.Mybatis两种开发模式的相关文章

javaweb学习总结(二十一)——JavaWeb的两种开发模式

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(javabean)的调用. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下

javaweb基础(21)_两种开发模式

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(javabean)的调用. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下

javaweb学习总结(二十一)——JavaWeb的两种开发模式【转】

原文 地址:http://www.cnblogs.com/xdp-gacl/p/3908610.html SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(j

javaweb(二十一)——JavaWeb的两种开发模式

一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(javabean)的调用. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据. 1.2.JSP+JavaBean开发模式编写计算器 首先分析一下jsp和javabe

javaweb的两种开发模式

以上截图来自大神"孤傲苍狼"的博客,学生收藏做笔记,无其他用法

php微信开发 -- 两种运营模式及服务器配置

微信的两种运营模式 编辑模式:使用微信公众平台提供的功能 开发者模式:通过腾讯的api接口调用相应程序进行二次开发 编辑模式 应用场景: l 不具备开发能力的运营者 l 主要是进行品牌宣传.新闻媒体.自助客服的公众帐号 l 运营初期,不需要特别多的功能 l 开发模式系统升级.故障等特殊情况 功能演示: 1)自动回复 被添加自动回复:当我们订阅或关注微信公众平台时,系统自动发送的回复,我们称之为关注回复或订阅回复. 关键词自动回复:当用户输入的关键词与我们系统设置的关键词相匹配时,自动返回的回复.

Java开发web的几种开发模式

Java Web开发方案有多种可供选择,这里列举一些经典的开发模式进行横向比较,为Java Web的开发模式选择提供参考.除此之外还有好多方案(如Tapestry和Wicket等等)并不了解,这里就不列举了. JSP+JAVABEAN开发模式:    特点:该模式将业务逻辑与页面表现进行分离,在一定程度上增加了程序的可调试性和维护性.    缺点:页面将控制与显示集于一身.    结论:简单,适合小型项目的快速构建与运行. JSP+Servlet+JavaBean开发模式:    特点:JSP作

Spark on YARN两种运行模式介绍

本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发)   问题导读 1.Spark在YARN中有几种模式? 2.Yarn Cluster模式,Driver程序在YARN中运行,应用的运行结果在什么地方可以查看? 3.由client向ResourceManager提交请求,并上传jar到HDFS上包含哪些步骤? 4.传递给app的参数应该通过什么来指定? 5.什么模式下最后将结果输

EF3:Entity Framework三种开发模式实现数据访问

前言 Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发流程大相径庭,开发体验完全不一样.三种开发模式各有优缺点,对于程序员没有哪种模式最好,只有哪种模式更适合.接下来我将分别使用这三种开发模式实现同一数据库模型的数据持久化功能.希望通过实践能帮助你找到更适合你的开发模式 Database First Database First开发模式指以数据库设计为基础,并根据数据库自动生成实体数据模型,从而驱动整个开发流程