mybatis 初级 crud操作

简介:为什么要使用mybatis。

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google
code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。 目前mybatis在github上托管。git(分布式版
本控制,当前比较流程)
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不
需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的
过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、
CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由
mybatis框架执行sql并将结果映射成java对象并返回。

优点:个人发现它阅读sql语句非常方便,非常容易确认数据的正确性。

废话不多说,开始我们初级的CRUD

第一步:

mybatis 包:

第二步:定义需要查询的实体。最好使用驼峰命名。

第三步:

定义数据接口,一定要xxMapper.java命名,这个是mybatis规定。

package com.mobile263.yingbatis01.mapper;

import java.util.List;

import com.mobile263.yingbatis01.pojo.User;

public interface UserMapper {

	public User selectUserById(int userId) throws Exception ;
	public void insertUser(User user) throws Exception;
	public void updateUser(User user) throws Exception;
	public void deleteUser(int userId) throws Exception;
	public List<User> selectAllUser() throws Exception;
}


第三步:

定义Mapper对应的XXMapper.xml,映射文件

<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mobile263.yingbatis01.mapper.UserMapper"> 
	<!-- User使用别名,在mybatis-config配置别名typeAlias -->
	<select id="selectUserById" resultType="User">
		select * from tb_user where userid=#{userId}
	</select>

	<!-- 获取自增长id -->
	<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyColumn="userid" 
	keyProperty="userId">
		insert into tb_user(userid,user_name,pwd,age,sex,birthday)
		values(TB_USER_USERID_SEQUENCE.nextval,#{userName},#{pwd},#{age},#{sex},#{birthday})
	</insert>
	<update id="updateUser" parameterType="User">
		update tb_user set user_name=#{userName},pwd=#{pwd},age=#{age},sex=#{sex},birthday=#{birthday} where userid=#{userId}
	</update>
	
	<delete id="deleteUser">
		delete from tb_user where userid=#{userId}
	</delete>
	<select id="selectAllUser" resultType="User">
		select * from tb_user
	</select>

</mapper>

以及mybatis-config.xml文件,这个是入口,mybatis通过它知道你的配置,然后通过sqlSession、connect等执行sql语句。

<?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>
	<properties resource="db.properties"></properties>
  <settings>
  	<!-- 开启驼峰命名和数据库映射 -->
  	<setting name="mapUnderscoreToCamelCase" value="true"/>
  </settings>
  <!-- 配置别名,方便子mapper简化书写 -->
<typeAliases>
	<typeAlias alias="User" type="com.mobile263.yingbatis01.pojo.User"/>
</typeAliases>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${db.driverClass}"/>
        <property name="url" value="${db.jdbcUrl}"/>
        <property name="username" value="${db.user}"/>
        <property name="password" value="${db.password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
  <!-- 开启包名扫描mapper.xml, -->
<!--     <mapper resource="com/mobile263/yingbatis01/mapper/UserMapper.xml"/> -->
    <package name="com.mobile263.yingbatis01.mapper"/>
  </mappers>
</configuration>

第四步:测试

package com.mobile263.yingbatis01.test;

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.After;
import org.junit.Before;
import org.junit.Test;

import com.mobile263.yingbatis01.mapper.UserMapper;
import com.mobile263.yingbatis01.pojo.User;

public class CrudTest {

	private UserMapper userMapper;
	private SqlSession  sqlSession;
	
	@Before
	public void setup() throws IOException {
		
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		sqlSession = sqlSessionFactory.openSession();
		userMapper = sqlSession.getMapper(UserMapper.class);
		
	}
	
	@After
	public void tearDown() {
		sqlSession.commit();
		sqlSession.close();	

	}
	
	@Test
	public void testSelectUserById() throws Exception {
		User user = userMapper.selectUserById(5);
		System.out.println(user.toString());
	}
	
	@Test
	public void testInsertUser() throws Exception {
		User user = new User("梁朝伟","234",23,"男",new Date());
		userMapper.insertUser(user);
		System.out.println(user.toString());
	}
	
	@Test
	public void testUpdateUser() throws Exception {
		User user = new User(2,"周润发","234",23,"男",new Date());
		userMapper.updateUser(user);
		
		System.out.println(user.toString());
		
	}
	
	@Test
	public void testDeleteUser() throws Exception {
		userMapper.deleteUser(7);
		
	}
	
	@Test
	public void testSelectAllUser() throws Exception {
		List<User> users = userMapper.selectAllUser();
		for (User user : users) {
			System.out.println(user.toString());
		}
		
	}
}

具体代码可参考:https://github.com/chen-liang-ying/mybatis01.git

简单,完~~

猜你喜欢

转载自blog.csdn.net/yingcly003/article/details/84774652