Mybatis框架学习笔记(2)---使用动态代理完成简单的增删改查

  使用mybatis的dao层的开发方式有两种,一种是类似与ssh框架,定义接口,然后定义实现类,还有一种方式就是动态代理方式,即只需要定义接口和方法就可以动态地去执行sql语句。

  1、在com.iteason.mapper目录下创建UserMapper接口,用于定义所有的行为

  


public interface UserMapper {
	//遵循四个原则
		//接口方法名即为User.xml中的id名
		//返回值类型和User.xml中的类型要一致
		//方法的参数类型要和User.xml中的类型一致
		//接口与相应的User.xml的命名空间绑定
	
		//通过id查
		public User findUserById(Integer id);	
		//通过用户名模糊查
		public List<User> findByUsername(String username);
		//插入User
		public void insertUser(User user);
		//更新User
		public void updateUser(Integer id);
		//通过id删除User
		public void deleteUser(Integer id);
		
}

   2、在com.iteason.mapper目录下创建UserMapper.xml配置文件,用于映射UserMapper接口和User类

<?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">
<mapper namespace="com.iteason.mapper.UserMapper">

	
	
	<!-- 通过id查询 -->
	<select id="findUserById" parameterType="Integer" resultType="User">
		select * from user where id = #{id}
	</select>
	

	<!-- 通过uesrname模糊查询 -->
	<select id="findUserByUsername" parameterType="String" resultType="User">
		select * from user where username like #{username}
	</select>
	
	
	<!-- 插入 -->
	<insert id="insertUser" parameterType="User" >
		<selectKey  order="AFTER" keyProperty="id" resultType="Integer">
			select LAST_INSERT_ID()
		</selectKey>
		insert into user(username,birthday,address,sex) values(#{username},#{birthday},#{address},#{sex});
	</insert>
	
	<!-- 更新 -->
	<update id="updateUser" parameterType="Integer">
		update user set username = "hahaha" where id = #{id}
	</update>
	
	<!-- 删除 -->
	<delete id="deleteUser" parameterType="Integer">
		delete from user where id = #{id}
	</delete>
</mapper>

 3、在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>

	 <!--  读取jdbc配置文件 -->
	 <properties resource="jdbc.properties"/>
	 
	 <!-- 设置别名,包下的类名即为别名 -->
	 <typeAliases>
	 	<package name="com.iteason.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>
		<package name="com.iteason.mapper"/>
	</mappers>
</configuration>

4、测试增加User

@Test
	public void insertUser() throws Exception {
		//加载核心配置文件
		String resource = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = factory.openSession();
		
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		User user = new User();
		user.setId(1212);
		user.setUsername("hahahahaa");
		mapper.insertUser(user);
		sqlSession.commit();
	}

5、测试删除User

@Test
	public void deleteTest() throws Exception {
		//加载核心配置文件
		String resource = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = factory.openSession();
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		
		mapper.deleteUser(31);
		
		sqlSession.commit();
				
	}

6、测试更新User

@Test
	public void testUpdate() throws Exception {
		//加载核心配置文件
		String resource = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = factory.openSession();
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		
		mapper.updateUser(1);
		
		sqlSession.commit();
		
	}

7、测试查询User

@Test
	public void selectUser() throws Exception {
		//加载核心配置文件
		String resource = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = factory.openSession();
		
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		User user = mapper.findUserById(10);
		System.out.println(user);
	}
	

猜你喜欢

转载自blog.csdn.net/pbrlovejava/article/details/81181167