简介:为什么要使用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
简单,完~~