mybatis的mapper代理

mybatis的核心配置文件

SqlMapConfig.xml



<configuration>

	  	

	
	<properties resource="db.properties">properties>
	<typeAliases>
	 
		
		
			<typeAlias type="com.yunxiang.mybatis.pojo.User"  alias="user"/>
	
		 <package name="com.yunxiang.mybatis.pojo"/>
	typeAliases>
	
	<plugins>
	    
	    <plugin interceptor="com.github.pagehelper.PageHelper">
	                
	        <property name="dialect" value="mysql"/>
	    plugin>
	plugins>


	<environments default="development">
		<environment id="development">
			
			<transactionManager type="JDBC" />
			
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${username}"/>
				<property name="password" value="${password}"/>
			dataSource>
		environment>
	environments>
	
	<mappers>
		
	
		
		
		 
		 <package name="com.yunxiang.mybatis.dao"/>
	mappers>

configuration>


mybatis默认支持的别名类型
mybatis的mapper代理_第1张图片
注:mybatis中可以直接使用默认的别名来代替对应的数据类型,但是当用到mybatis中没有定义别名的数据类型时,就要写出数据的全名。如:在使用list集合时,需要使用"java.lang.List"。

映射文件的UserMapper.xml





<mapper namespace="com.yunxiang.mybatis.dao.UserMapper">


	
	<select id="findUserListById" parameterType="java.util.List" resultType="com.yunxiang.mybatis.pojo.User">
		select * from user 
		<where>
			<if test="list != null">
				<foreach collection="list" item="id" open="(" close=")" separator="or">
				id = #{id}
				foreach>
			if>
		where>
	select>
	
	
	<select id="findUserById" parameterType="int" resultType="com.yunxiang.mybatis.pojo.User">
		select * from user where id = #{id}
	select>
	
	
	<select id="findUserByName" parameterType="map" resultType="com.yunxiang.mybatis.pojo.User">
	select * from user 

		<where>
			<if test="sex != null and sex != '' ">
			or	sex = #{sex}
			if>
			<choose>
			 	<when test=" _parameter != null and _parameter !='' ">
			 		name like "%"#{name}"%"
			 	when>
			 	<otherwise>1=1otherwise>
		 	choose> 
		where>
		
	select>
	
	
	<insert id="insertUser" parameterType="com.yunxiang.mybatis.pojo.User">
		insert into user(name,brithday,sex,address) values(#{name},#{brithday},#{sex},#{address}) 
	insert>
	
	
	<delete id="deleteUserById" parameterType="int">
		delete from user where id = #{id}
	delete>
 	
 	
 	<update id="updateUser" parameterType="com.yunxiang.mybatis.pojo.User">
 		update user 
 		<set>
 			<if test=" name != null and name != '' ">
 			name = #{name},
 			if>
 			<if test=" sex != null and sex != '' ">
 			 sex = #{sex},
 			if>
 			<if test=" brithday != null and brithday != '' ">
 			 brithday = #{brithday},
 			if>
 			<if test=" address != null and address != '' ">
 			 address = #{address},
 			if>
 		set>
 			where id = #{id}
 	update>
mapper>

UserMapper接口

import java.util.List;
import java.util.Map;

import com.yunxiang.mybatis.pojo.User;

public interface UserMapper {
	
	User findUserById(int id);
	List<User> findUserByName(Map<String, String> map);
	List<User> findUserListById(List<Integer> list);
	int deleteUserById(int id);
	int insertUser(User user);
	int updateUser(User user);
}

测试

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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 com.yunxiang.mybatis.dao.UserMapper;
import com.yunxiang.mybatis.pojo.User;

public class UserMapperTest {
	
	
	
private SqlSessionFactory factory;
	
	@Before
	public void setUp() throws Exception{
		//mybatis配置文件
		String resource = "SQLMapConfig.xml";
		//得到配置文件流
		InputStream inputStream = Resources.getResourceAsStream(resource);
		//创建会话工厂
		factory = new SqlSessionFactoryBuilder().build(inputStream);		
	}
	
	//根据id查询用户信息
	@Test
	public void getUserByIdTest() throws Exception {
		
		//通过工厂得到SQLSession
		SqlSession session = factory.openSession();
		//获取UserMapper对象
		UserMapper userMapper = session.getMapper(UserMapper.class);
		User user = userMapper.findUserById(1);
		System.out.println(user);
		//释放资源
		session.close();
	}
	
	//根据id查询多个用户信息
		@Test
		public void getUserListByIdTest() throws Exception {
			

			//通过工厂得到SQLSession
			SqlSession session = factory.openSession();
			//获取UserMapper对象
			UserMapper userMapper = session.getMapper(UserMapper.class);
			List<Integer> list = new ArrayList<Integer>();
			list.add(1);
			list.add(11);
			list.add(10);
			List<User> userList = userMapper.findUserListById(list);
			System.out.println(userList);
			//释放资源
			session.close();
		}
	
	//模糊查询
		@Test
		public void findUserByNameTest() throws Exception {
			

			//通过工厂得到SQLSession
			SqlSession session = factory.openSession();
			//获取UserMapper对象
			UserMapper userMapper = session.getMapper(UserMapper.class);
			Map<String,String> map = new HashMap<String,String>();
			map.put("sex", "女");
			map.put("name", "曹");
			List<User> list = userMapper.findUserByName(map);
			System.out.println(list);
			
			//释放资源
			session.close();
		}
		
		//更新数据
		@Test
		public void updateUserTest() throws Exception {
			

			//通过工厂得到SQLSession
			SqlSession session = factory.openSession();
			//获取UserMapper对象
			UserMapper userMapper = session.getMapper(UserMapper.class);
			User user = new User();
			user.setId(8);
			user.setName("貂蝉");
			user.setSex("女");
			int count = userMapper.updateUser(user);
			System.out.println(count);
			
			session.commit();
			//释放资源
			session.close();
		}
		
		//插入数据
		@Test
		public void insertUserTest() throws Exception {
			

			//通过工厂得到SQLSession
			SqlSession session = factory.openSession();
			//获取UserMapper对象
			UserMapper userMapper = session.getMapper(UserMapper.class);
			User user = new User();
			user.setId(3);
			user.setName("曹操");
			user.setAddress("安徽亳州");
			user.setBrithday(new Date());
			user.setSex("男");
			int count = userMapper.insertUser(user);
			System.out.println(count);
			
			session.commit();
			//释放资源
			session.close();
		}
		
		//删除数据
		@Test
		public void deleteUserByIdTest() throws Exception {
			

			//通过工厂得到SQLSession
			SqlSession session = factory.openSession();
			//获取UserMapper对象
			UserMapper userMapper = session.getMapper(UserMapper.class);
		
			userMapper.deleteUserById(9);
			
			session.commit();
			//释放资源
			session.close();
		}
}

错误解析

如果程序运行时报错" org.apache.ibatis.binding.MapperMethod$SqlCommand",可以在pom.xml中加上如下配置。

<build>
		<resources>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>falsefiltering>
            resource>
            <resource>
                <directory>src/main/resourcesdirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>falsefiltering>
            resource>
        resources>
	build>

你可能感兴趣的:(mybatis,java)