mybatis 是一个开源的 用于对数据库操作的框架, 读者基本都大体了解其基本功能, 我就不多解释了 直接上demo吧。
我用的是maven管理包, 如下
<dependencies> <dependency> <groupId>org.springFrameworkgroupId> <artifactId>spring-webmvcartifactId> <version>3.2.8.RELEASEversion> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>5.1.40version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>3.2.8version> dependency> <dependency> <groupId>log4jgroupId> <artifactId>log4jartifactId> <version>1.2.12version> dependency> <dependency> <groupId>org.apache.logging.log4jgroupId> <artifactId>log4j-apiartifactId> <version>2.7version> dependency> <dependency> <groupId>org.apache.logging.log4jgroupId> <artifactId>log4j-coreartifactId> <version>2.7version> dependency> <dependency> <groupId>org.slf4jgroupId> <artifactId>slf4j-apiartifactId> <version>1.6.4version> dependency> <dependency> <groupId>commons-logginggroupId> <artifactId>commons-loggingartifactId> <version>1.1.3version> dependency> <dependency> <groupId>cglibgroupId> <artifactId>cglibartifactId> <version>2.2.2version> dependency> <dependency> <groupId>asmgroupId> <artifactId>asmartifactId> <version>3.3.1version> dependency> dependencies>
如果不是用的maven管理包, 也可以找下列包进行导入, 一下是javaWeb项目的目录结构,在这里我主要是用maven来做,其实都一样的。
导好包之后呢,我们就要开始做mybatis项目了。
-- 1:在src下写入配置文件sqlMapConfig.xml,可以参照下方
DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties">
properties>
<typeAliases>
<package name="cn.itcast.mybatis.po"/>
typeAliases>
<environments default="development">
<environment id="development">
<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>
<mappers>
<mapper resource="sqlmap/User.xml" />
<package name="cn.itcast.mybatis.mapper"/>
mappers>
configuration>
-- 2: 配置完sqlMapConfig之后我们就先把实体类弄好吧。 src下创建一个实体类
import java.util.Date; public class User { private Integer id; private String username; private String sex; private Date birthday; private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; } }
-- 3: 然后我们就开始写映射文件了
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="test"> <select id="findUserById" parameterType="int" resultType="com.weibang.mybatis.beans.User"> SELECT * FROM user WHERE id=#{id} select> <select id="findUserByName" parameterType="String" resultType="com.weibang.mybatis.beans.User"> SELECT * FROM user WHERE username LIKE '%${value}%' select> <insert id="InsertUser" parameterType="com.weibang.mybatis.beans.User"> <selectKey keyProperty="id" order="AFTER" resultType="int"> SELECT LAST_INSERT_ID() selectKey> INSERT INTO user (username,birthday,sex,address) VALUES(#{username},#{birthday},#{sex},#{address}) insert> <delete id="deleteUser" parameterType="int"> delete from user where id = #{id} delete> <update id="updateUser" parameterType="com.weibang.mybatis.beans.User"> update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id = #{id} update> mapper>
-- 4: 映射文件写好了之后, 我们其实就可以进行测试了, 我们这里用的是junit测试
import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; 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.Before; import org.junit.Test; import com.weibang.mybatis.beans.User; public class First_test { private SqlSessionFactory sqlsessionFactory; // 创建会话工厂 @Before public void init() throws IOException { // 创建会话工厂 // 配置文件(sqlMapConfig.xml) String resource = "SqlMapConfig.xml"; // 将配置文件加载到输入流中 InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂 sqlsessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testFindById() { // 通过sqlsessionFactory来创建sqlsession SqlSession sqlsession = sqlsessionFactory.openSession(); // 第一个参数: statement的位置,等于namespace+statement的ID // 第二个参数: 传入的参数 User user = null; try { user= sqlsession.selectOne("test.findUserById", 1); }catch(Exception e) { e.printStackTrace(); } finally { // 关闭sqlsession sqlsession.close(); } System.out.println(user); } /**测试: 根据名字模糊查询*/ @Test public void testFindByName()throws Exception { SqlSession sqlsession = sqlsessionFactory.openSession(); Listuser = null; try { user = sqlsession.selectList("test.findUserByName", "小明"); }catch(Exception e) { e.printStackTrace(); } finally { sqlsession.close(); } System.out.println(user); } /** * mybatis 插入 并且获取插入的主键值 */ @Test public void testInsertUser() { SqlSession sqlsession = sqlsessionFactory.openSession(); User user = new User(); user.setUsername("kenson2"); user.setBirthday(new Date()); user.setSex("1"); user.setAddress("江西南昌"); int a = 0; try { a= sqlsession.insert("test.InsertUser", user); }catch(Exception e) { e.printStackTrace(); } finally { sqlsession.commit(); sqlsession.close(); } System.out.println("受影响的行数:"+a); System.out.println("返回的主键值 "+user.getId()); } /** * 测试 根据id删除用户 */ @Test public void testDelete() { SqlSession sqlsession = sqlsessionFactory.openSession(); int row=0; try { row =sqlsession.delete("test.deleteUser", 31); sqlsession.commit(); } catch (Exception e) { // TODO: handle exception }finally { sqlsession.close(); } System.out.println("已经删除的行数:"+row); } /** * 测试更新操作 */ @Test public void testUpdate() { SqlSession sqlsession = sqlsessionFactory.openSession(); User user = new User(); user.setId(32); user.setUsername("kangcheng"); user.setBirthday(new Date()); user.setSex("1"); user.setAddress("福建"); int row =0; try { row= sqlsession.update("test.updateUser", user); sqlsession.commit(); } catch (Exception e) { // TODO: handle exception }finally { sqlsession.close(); } System.out.println("已经更新了:"+row+"行"); } }
OK 到这里 我们mybatis的简单增删查改就已经完成了, 对了 数据库要自己建表哦。