Mybatis学习笔记(3)--MyBatis的原始Dao开发模式

1.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">
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
<mapper namespace="user">

	<!-- id:statement的id 或者叫做sql的id -->
	<!-- parameterType:声明输入参数的类型 -->
	<!-- resultType:声明输出结果的类型,应该填写pojo的全路径 -->
	<!-- #{}:输入参数的占位符,相当于jdbc的? -->
	<select id="queryUserId" parameterType="int"
		resultType="com.skiff.www.domain.User">
		select * from user where id = #{id}
	</select>

	<!-- 如果返回多个结果,mybatis会自动把返回的结果放在list容器中 -->
	<!-- resultType的配置和返回一个结果的配置一样 -->
	<select id="queryUserByUsername1" parameterType="string"
		resultType="com.skiff.www.domain.User">
		SELECT * FROM user WHERE username LIKE #{username}
	</select>

	<!-- 如果传入的参数是简单数据类型,${}里面必须写value -->
	<select id="queryUserByUsername2" parameterType="string"
		resultType="com.skiff.www.domain.User">
		SELECT * FROM `user` WHERE username LIKE '%${value}%'
	</select>

	<!-- 插入语句中values中括号的字段和数据库中的表中的数据是一一对应的 而value后面的数据是实体的对象中对应的属性 -->
	<!-- 保存用户 -->
	<insert id="saveUser" parameterType="com.skiff.www.domain.User">
		<!-- selectKey 标签实现主键返回 -->
		<!-- keyColumn:主键对应的表中的哪一列 -->
		<!-- keyProperty:主键对应的pojo中的哪一个属性 -->
		<!-- order:设置在执行insert语句前执行查询id的sql,在执行insert语句之后执行查询id的sql -->
		<!-- resultType:设置返回的id的类型 -->
		<selectKey keyColumn="id" keyProperty="id" order="AFTER"
			resultType="int">
			SELECT LAST_INSERT_ID()
		</selectKey>
		INSERT INTO `user`
		(username,birthday,sex,address) VALUES
		(#{name},#{birthday},#{sex},#{address})
	</insert>

	<!-- 更新用户 -->
	<update id="updateUserById" parameterType="com.skiff.www.domain.User">
		UPDATE `user` SET
		username = #{name},
		address = #{address},
		birthday = #{birthday} WHERE id = #{id}
	</update>

	<!-- 删除用户 -->
	<delete id="deleteUserById" parameterType="int">
		delete from user where
		id=#{id}
	</delete>



</mapper>


2.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>
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper  resource="sqlmap/User.xml"/>
		<mapper  resource="sqlmap/Order.xml"/>
	</mappers> 
<!-- 	<mappers>
		<package name="com.skiff.www.mapper"/>
	</mappers> -->
</configuration>



3.dao接口:UserDao.java

/**     
 * @文件名称: UserDao.java   
 * @描述: TODO  
 * @作者:  一叶扁舟(skiff)
 * @时间:2018年1月9日 下午3:20:26  
 * @版本:V1.0     
 */ 
package com.skiff.www.dao;

import com.skiff.www.domain.User;

/**  
 * @类功能说明:    
 * @作者: 一叶扁舟 (skiff)
 * @创建时间:2018年1月9日 下午3:20:26  
 * @版本:V1.0  
 */
public interface UserDao {

	//通过用户ID查询一个用户
	public User selectUserById(Integer id);
}

4.dao实现类

/**     
 * @文件名称: UserDaoImpl.java   
 * @描述: TODO  
 * @作者:  一叶扁舟(skiff)
 * @时间:2018年1月9日 下午3:22:04  
 * @版本:V1.0     
 */ 
package com.skiff.www.dao.impl;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.skiff.www.dao.UserDao;
import com.skiff.www.domain.User;

/**  
 * @类功能说明:    
 * @作者: 一叶扁舟 (skiff)
 * @创建时间:2018年1月9日 下午3:22:04  
 * @版本:V1.0  
 */
public class UserDaoImpl implements UserDao{

	//注入
	private SqlSessionFactory sqlSessionFactory;
	public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
		this.sqlSessionFactory = sqlSessionFactory;
	}
	
	//通过用户ID查询一个用户
	public User selectUserById(Integer id){
		SqlSession sqlSession = sqlSessionFactory.openSession();
		return sqlSession.selectOne("queryUserId", id);
	}
	//通过用户名称模糊查询
	public List<User> selectUserByUsername(Integer id){
		SqlSession sqlSession = sqlSessionFactory.openSession();
		return sqlSession.selectList("queryUserId", id);
	}
}



5.dao测试类

/**     
 * @文件名称: UserDaoTest.java   
 * @描述: TODO  
 * @作者:  一叶扁舟(skiff)
 * @时间:2018年1月9日 下午3:25:52  
 * @版本:V1.0     
 */ 
package test.com.skiff.www.testUser;

import java.io.InputStream;

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.skiff.www.dao.UserDao;
import com.skiff.www.dao.impl.UserDaoImpl;
import com.skiff.www.domain.User;

/**  
 * @类功能说明:    
 * @作者: 一叶扁舟 (skiff)
 * @创建时间:2018年1月9日 下午3:25:52  
 * @版本:V1.0  
 */
public class UserDaoTest {

	public SqlSessionFactory sqlSessionFactory;
	@Before
	public void before() throws Exception {
		//加载核心配置文件
		String resource = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		//创建SqlSessionFactory
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
	}
	@Test
	public void testDao() throws Exception {
		
		//注入session工厂
		UserDao userDao = new UserDaoImpl(sqlSessionFactory);
		//调用dao方法查询出结果
		User user = userDao.selectUserById(31);
		System.out.println(user);
	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值