首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

MyBatis学习习题(1)

2012-07-01 
MyBatis学习练习(1)昨天晚上学习了Mybatis文档,今天编写了一个简单练习。基本目的:利用Mybatis完成对一个表

MyBatis学习练习(1)
昨天晚上学习了Mybatis文档,今天编写了一个简单练习。

基本目的:利用Mybatis完成对一个表简单的select、insert、update、delete操作。达到熟悉MyBatis基本用法的目的。
用到的jar:MyBatis.jar,数据库驱动.jar(如mysql-connector.jar)


MyBatis的配置文件MyBatisConfig.xml。可以进行数据源和事务管理器的配置,以及其他影响MyBatis执行的变量。

<?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="com/chl/mybatis/properties/config.properties"> </properties> <!-- 简称  --><typeAliases><typeAlias alias="User" type="com.chl.mybatis.domain.User"></typeAlias></typeAliases><!-- 环境设置 --><environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> <!-- 可以继续配置environment --></environments> <!-- 导入映射的文件,采用类路径方式 --><mappers> <mapper resource="com/chl/mybatis/data/UserMapper.xml"/> </mappers> </configuration>


MyBatis的映射文件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"><mapper namespace="com.chl.mybatis.data.UserMapper"><select id="selectUsers" resultType="User">select username, sex from t_user;</select><insert id="insertUser" parameterType="User">insert into t_user (username, sex) values (#{userName},#{sex});</insert><update id="updateUser" parameterType="User">update t_user set username=#{userName}, sex=#{sex} where username=#{userName};</update><delete id="deleteUser" parameterType="User">delete from t_user where username=#{userName} and sex=#{sex}</delete></mapper>


UserMapper接口文件,该文件与UserMapper.xml有着某些地方一一对应的关系,注意哦。
package com.chl.mybatis.data;import java.util.List;import com.chl.mybatis.domain.User;/** * @author chl * 定义User的映射器接口, * 接口名称与命名空间的名称同, * 方法名称与映射配置中映射方法的id同。 * */public interface UserMapper {public List<User> selectUsers();public void insertUser(User user);public void updateUser(User user);public void deleteUser(User user);}


MyBatis文件,其中定义了产生SqlSessionFactory的工厂单例类。
package com.chl.mybatis;import java.io.IOException;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;/** * @author chl * 工厂单例模式,生成SqlSessionFactory实例。 * */public class MyBatis {private MyBatis(){};private static SqlSessionFactory ssf = null;public static SqlSessionFactory getSessionFactory() throws IOException{if(null == ssf){String resource = "com/chl/mybatis/data/mybatisConfig.xml";Reader reader = Resources.getResourceAsReader(resource);ssf = new SqlSessionFactoryBuilder().build(reader);}//ifreturn ssf;}}


User文件,定义了User javabean实体类。
package com.chl.mybatis.domain;public class User {private String userName = "";private String sex = "";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;}}


userAction类,方法体中获取SqlSessionFactory实例,获得SqlSession,获取SqlMapper,然后调用映射的方法。
package com.chl.mybatis.action;import java.io.IOException;import java.util.List;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import com.chl.mybatis.MyBatis;import com.chl.mybatis.data.UserMapper;import com.chl.mybatis.domain.User;/** * @author chl * 对user的操作。 * 其中将SqlSession放于方法级范围。 */public class UserAction {public void insert(User user){SqlSessionFactory ssf = null;SqlSession session = null;try {ssf = MyBatis.getSessionFactory();session = ssf.openSession();UserMapper userMapper = session.getMapper(UserMapper.class);userMapper.insertUser(user);selectAll();System.out.println("==================================");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{if(null != session){session.close();session = null;}}}public void update(User user){SqlSessionFactory ssf = null;SqlSession session = null;try {ssf = MyBatis.getSessionFactory();session = ssf.openSession();UserMapper userMapper = session.getMapper(UserMapper.class);userMapper.updateUser(user);selectAll();System.out.println("==================================");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{if(null != session){session.close();session = null;}}}public void selectAll(){SqlSessionFactory ssf = null;SqlSession session = null;try {ssf = MyBatis.getSessionFactory();session = ssf.openSession();UserMapper userMapper = session.getMapper(UserMapper.class);List<User> users = userMapper.selectUsers();for(User u : users){System.out.println(u.getUserName()+"    "+u.getSex());}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{if(null != session){session.close();session = null;}}}public void delete(User user){SqlSessionFactory ssf = null;SqlSession session = null;try {ssf = MyBatis.getSessionFactory();session = ssf.openSession();UserMapper um = session.getMapper(UserMapper.class);um.deleteUser(user);selectAll();System.out.println("==================================");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{if(null != session){session.close();session = null;}}}}

热点排行