mybatis开发环境搭建
案例结构:
这里用Oralce+myeclipse 测试:
建表语句:
CREATE TABLE USERS ( ID NUMBER(10) NOT NULL PRIMARY KEY, NAME VARCHAR2(100) , birth DATE ); --创建序列 CREATE SEQUENCE users_seq START WITH 1;
1.mybaits配置文件configuration.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 > <properties resource="db.properties"> </properties> <!-- 为实体对象起一个别名 --> <typeAliases > <typeAlias type="com.wa.mybatis.model.Users" alias="Users"/><!-- <package name="com.wa.mybatis.model"/> --></typeAliases> <environments default="development"> <environment id="development" > <transactionManager type="JDBC"/> <dataSource type="POOLED" > <property name="username" value="${username}"/> <property name="password" value="${password}"/> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/wa/mybatis/dao/UserMapper.xml"/> </mappers> </configuration>
二、Users类:
public class Users { private Integer id ; private String name ; private Date birth ; //getter ,setter 方法省略 }
三、userDao类:
public interface UserDao { public Users findById(int id); public void saveUser(Users user); public void deleteById(int id); public void updateUser(Users user); public List<Users> findAllUser(); }
四、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"> <!--这块等于dao接口的实现 namespace必须和接口的类路径一样--> <mapper namespace="com.wa.mybatis.dao.UserDao"> <insert id="saveUser" parameterType="Users"> <!-- 通过序列为对象id赋值 --> <selectKey keyColumn="id" keyProperty="id" order="BEFORE" resultType="java.lang.Integer"> select users_seq.nextval from dual </selectKey> insert into users (id,name,birth) values (#{id},#{name},#{birth}) </insert> <!-- 删除一个对象 --> <delete id="deleteById" parameterType="Integer"> delete from users where id = #{id} </delete> <!-- 更新一个对象 --> <update id="updateUser" parameterType="Users"> update users set name=#{name},birth=#{birth} where id=#{id} </update> <!-- 查询时要指定结果集类型 --> <select id="findById" parameterType="Integer" resultType="Users"> select * from users where id = #{id} </select> <select id="findAllUser" resultMap="list"> select * from users </select> <resultMap type="Users" id="list"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="birth" property="birth"/> </resultMap> </mapper>
五.sessionFactory工具类:
import java.io.IOException; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /** * 获取sessionfactory对象的工具类 */ public class SessionFactoryUtil { public static SqlSessionFactory getFactory() throws IOException{ String resource = "configuration.xml"; //加载配置文件,获取sessionfactory对象 SqlSessionFactory sessionFactory= new SqlSessionFactoryBuilder() .build(Resources.getResourceAsStream(resource)); return sessionFactory; } }
六、测试:
import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.junit.Test; import com.wa.mybatis.dao.UserDao; import com.wa.mybatis.model.Users; import com.wa.mybatis.util.SessionFactoryUtil; public class Test1 { /** * 添加对象 * @throws IOException */ @Test public void test1() throws IOException{ SqlSessionFactory sessionFactory =SessionFactoryUtil.getFactory(); SqlSession session = sessionFactory.openSession(); //获取映射的接口对象 UserDao userDao = session.getMapper(UserDao.class); Users user = new Users(); //user.setId(-1); user.setBirth(new Date()); user.setName("mybatis"); userDao.saveUser(user); //提交事务 session.commit(); } /** * 删除对象 * @throws IOException */ @Test public void test2() throws IOException{ SqlSessionFactory sessionFactory =SessionFactoryUtil.getFactory(); SqlSession session = sessionFactory.openSession(); //获取映射的接口对象 UserDao userDao = session.getMapper(UserDao.class); userDao.deleteById(82); session.commit(); } /** * 更新一个对象 * @throws IOException */ @Test public void test3() throws Exception{ SqlSessionFactory sessionFactory =SessionFactoryUtil.getFactory(); SqlSession session = sessionFactory.openSession(); //获取映射的接口对象 UserDao userDao = session.getMapper(UserDao.class); Users user = new Users (); user.setId(81); user.setBirth(new SimpleDateFormat("yyyy-MM-dd").parse("2012-10-21")); user.setName("ibatis"); userDao.updateUser(user); session.commit(); } /** * 查询一个对象 * @throws IOException */ @Test public void test4() throws Exception{ SqlSessionFactory sessionFactory =SessionFactoryUtil.getFactory(); SqlSession session = sessionFactory.openSession(); //获取映射的接口对象 UserDao userDao = session.getMapper(UserDao.class); Users user = userDao.findById(81); System.out.println(user); } /** * 查询所有对象 * @throws IOException */ @Test public void test5() throws Exception{ SqlSessionFactory sessionFactory =SessionFactoryUtil.getFactory(); SqlSession session = sessionFactory.openSession(); //获取映射的接口对象 UserDao userDao = session.getMapper(UserDao.class); List<Users> list = userDao.findAllUser(); System.out.println(list); } }