zoukankan      html  css  js  c++  java
  • MyBatis框架:第三章:传统方式mybatis的增,删,改,查实现

    传统方式mybatis的增,删,改,查实现

    准备工作
    创建java Project项目,建库建表插入数据,到数据库中执行,导入jar包
    添加mybatis的核心jar
    添加mysql数据库连接驱动
    添加log4j日记需要的核心jar
    在config目录下添加 log4j.propreties代码:

    # Global logging configuration
    log4j.rootLogger=DEBUG, stdout
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
    

    开始编写
    在config目录下添加 mybatis-config.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>
    	<!-- environments 是配置多个jdbc环境 
    		default表示使用的默认环境 
    	 -->
    	<environments default="development">
    		<!-- 
    			environment 标签用来配置一个环境 
    				id 是环境的标识
    		 -->
    		<environment id="development">
    			<!-- 
    				transactionManager	配置使用什么样类型的数据库事务管理
    					 type="JDBC"  	表示启用事务,有commit和rollback操作
    					 type="MANAGED" 表示不直接控制事务。交给容器处理几乎不用。
    			 -->
    			<transactionManager type="JDBC" />
    			<!-- 
    				dataSource标签配置连接池
    					type="POOLED"	表示启用数据库连接池
    					type="UNPOOLED"	表示不启用数据库连接池
    			 -->
    			<dataSource type="POOLED">
    				<!-- 连接数据库的驱动类 -->
    				<property name="driver" value="com.mysql.jdbc.Driver" />
    				<!-- 数据库访问地址 -->
    				<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
    				<!-- 数据库用户名 -->
    				<property name="username" value="root" />
    				<!-- 数据库密码 -->
    				<property name="password" value="root" />
    			</dataSource>
    		</environment>
    	</environments>
    	<mappers>
    		<!-- 导入mapper配置文件 -->
    		<mapper resource="com/pojo/UserMapper.xml" />
    	</mappers>
    </configuration>
    

    创建一个UserDao接口

    public interface UserDao {
    	// 保存用户
    	public int saveUser(User user);    
    	// 更新用户
    	public int updateUser(User user);    
    	// 根据id删除用户
    	public int deleteUserById(int id);    
    	// 根据id搜索用户
    	public User findUserById(int id);    
    	// 搜索全部用户
    	public List<User> findUsers();    
    }
    

    编写UserMapper.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属性是名称空间的意思。
      	功能相当于 给配置文件定义一个包名。
      	一般情况下。可以写两种值,一种是对应类的全类名
      	一种情况是。对应类的处理接口全类名
       -->
    <mapper namespace="com.pojo.User">
    	<!-- 插入用户
        parameterType 属性设置参数类型
        id 为使用的标识
     	-->
    	<insert id="saveUser" parameterType="com.pojo.User">
    		insert into t_user(last_name,sex) values(#{lastName},#{sex})
    	</insert>
    	<!-- 更新用户 
        parameterType 属性设置参数类型
        id 为使用的标识
        -->
    	<update id="updateUser" parameterType="com.pojo.User">
    		update t_user
    			set
    		last_name = #{lastName},
    		sex = #{sex}
    			where
    		id = #{id}
    	</update>
    	<!-- 根据id删除用户
        parameterType 属性设置参数类型
        id 为使用的标识        
         -->
    	<delete id="deleteUserById" parameterType="int">
    		delete from t_user where id = #{id}
    	</delete>
    	<!-- 根据id搜索用户
        parameterType 属性设置参数类型
        id 为使用的标识 
        resultType 属性是返回的类型
         -->
    	<select id="findUserById" parameterType="int" resultType="com.pojo.User">
    		select id,last_name lastName,sex from t_user where id = #{id}
    	</select>
    	<!-- 搜索全部用户
        id 为使用的标识 
        resultType 属性是返回的类型
         -->
    	<select id="findUsers" resultType="com.pojo.User">
    		select id,last_name lastName,sex from t_user
    	</select>
    </mapper>
    

    UserDaoImpl代码:

    public class UserDaoImpl implements UserDao {
    
    	SqlSessionFactory sqlSessionFactory;
    
    	public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
    		this.sqlSessionFactory = sqlSessionFactory;
    	}
    	
    	@Override
    	public int saveUser(User user) {
    		SqlSession sqlSession = sqlSessionFactory.openSession();
    		int result = 0;
    		try {
    			result = sqlSession.insert("com.pojo.User.saveUser", user);
    			//提交事务
    			sqlSession.commit();
    		} finally {
    			sqlSession.close();
    		}
    		return result;
    	}
    
    	@Override
    	public int updateUser(User user) {
    		SqlSession sqlSession = sqlSessionFactory.openSession();
    		int result = 0;
    		try {
    			result = sqlSession.update("com.pojo.User.updateUser", user);
    			//提交事务
    			sqlSession.commit();
    		} finally {
    			sqlSession.close();
    		}
    		return result;
    	}
    
    	@Override
    	public int deleteUserById(int id) {
    		SqlSession sqlSession = sqlSessionFactory.openSession();
    		int result = 0;
    		try {
    			result = sqlSession.delete("com.pojo.User.deleteUserById", id);
    			//提交事务
    			sqlSession.commit();
    		} finally {
    			sqlSession.close();
    		}
    		return result;
    	}
    
    	@Override
    	public User findUserById(int id) {
    		SqlSession sqlSession = sqlSessionFactory.openSession();
    		User result = null;
    		try {
    			result = sqlSession.selectOne("com.pojo.User.findUserById", id);
    			//提交事务
    			sqlSession.commit();
    		} finally {
    			sqlSession.close();
    		}
    		return result;
    	}
    
    	@Override
    	public List<User> findUsers() {
    		SqlSession sqlSession = sqlSessionFactory.openSession();
    		List<User> result = null;
    		try {
    			result = sqlSession.selectList("com.pojo.User.findUsers");
    			//提交事务
    			sqlSession.commit();
    		} finally {
    			sqlSession.close();
    		}
    		return result;
    	}
    }
    

    测试类:

    public class UserDaoTest {
    
    	static UserDao userDao;
    
    	/**
    	 * @BeforeClass标注的方法会在所有测试之前执行之前执行一次
    	 * @throws Exception
    	 */
    	@BeforeClass
    	public static void setUpBeforeClass() throws Exception {
    		String url = "mybatis-config.xml";
    		InputStream inputStream = Resources.getResourceAsStream(url);
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    		userDao = new UserDaoImpl(sqlSessionFactory);
    	}
    
    	@Test
    	public void testSaveUser() {
    		userDao.saveUser(new User(null,"admins",0));
    	}
    
    	@Test
    	public void testUpdateUser() {
    		userDao.updateUser(new User(2, "admin", 1));
    	}
    
    	@Test
    	public void testDeleteUserById() {
    		userDao.deleteUserById(2);
    	}
    
    	@Test
    	public void testFindUserById() {
    		System.out.println(userDao.findUserById(1));
    	}
    
    	@Test
    	public void testFindUsers() {
    		System.out.println(userDao.findUsers());
    	}
    }
    
  • 相关阅读:
    读取纯真IP数据库C++源代码
    Ubuntu 安装VMware tools 解决方法讨论
    VMware虚拟机磁盘压缩
    使用 TestLink 进行测试管理
    正则表达式30分钟入门教程(转)
    HDU 1325 Is It A Tree? POJ 1308 Is It A Tree? (并查集+入度,判断一个有向图是树)
    POJ 1703 Find them, Catch them (并查集)
    POJ 1182 食物链(并查集)
    POJ 1984 Navigation Nightmare (并查集)
    POJ 2236 Wireless Network (并查集)
  • 原文地址:https://www.cnblogs.com/javawxid/p/12812095.html
Copyright © 2011-2022 走看看