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 映射文件的Statementid必须和接口的方法名一致。

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

  

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>
	<!-- 是用resource属性加载外部配置文件 -->
	<properties resource="db.properties"/>
	
	<!-- 别名 -->
	<typeAliases>
		<typeAlias type="com.itheima.mybatis.pojo.User" alias="User"/>
		<!-- 批量定义别名 -->
		<package name="com.itheima.mybatis.pojo"/>
	</typeAliases>

	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- Mapper的位置 -->
	<mappers>
		<mapper resource="sqlmap/User.xml"/>
		
		<!-- 此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中 -->
		<!-- <mapper class="cn.itcast.mybatis.mapper.UserMapper"/> -->
	</mappers>
	
</configuration>

 

  

 

  

  

 

  

转载于:https://www.cnblogs.com/syj1993/p/8605899.html

安装Docker安装插件,可以按照以下步骤进行操作: 1. 首先,安装Docker。可以按照官方文档提供的步骤进行安装,或者使用适合您操作系统的包管理器进行安装。 2. 安装Docker Compose插件。可以使用以下方法安装: 2.1 下载指定版本的docker-compose文件: curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2.2 赋予docker-compose文件执行权限: chmod +x /usr/local/bin/docker-compose 2.3 验证安装是否成功: docker-compose --version 3. 在安装插件之前,可以测试端口是否已被占用,以避免编排过程中出错。可以使用以下命令安装netstat并查看端口号是否被占用: yum -y install net-tools netstat -npl | grep 3306 现在,您已经安装Docker安装Docker Compose插件,可以继续进行其他操作,例如上传docker-compose.yml文件到服务器,并在服务器上安装MySQL容器。可以参考Docker的官方文档或其他资源来了解如何使用DockerDocker Compose进行容器的安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker安装docker-compose插件](https://blog.youkuaiyun.com/qq_50661854/article/details/124453329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Docker安装MySQL docker安装mysql 完整详细教程](https://blog.youkuaiyun.com/qq_40739917/article/details/130891879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值