Mybatis搭建过程详解
2015-10-31 19:49
357 查看
学习完了SSH框架后,发现企业中使用Mybatis得也很多。所以学习了一下Mybatis.下面主要介绍Mybatis的搭建过程
一:新建Web项目
二:修改项目的编码UTF-8
三:拷贝Jar包
四:确定使用底层架构,比如使用三层,然后根据架构要求,新建各个sourcefolder以及下面的package
五:创建User和Address实体
User:
在src文件夹下创建mybatis-config.xml文件和jdbc.properties文件
jdbc.properties
IUserDao:
其中MyBatisUtil是在com.cars.mybatis.util包下
在test文件夹下创建包:com.cars.mybatis.test,并创建类,如下:
测试通过,则说明我们搭建成功了。
这只是一个简单的搭建流程,至于Mybatis的关联关系如何处理,是不是像Hibernate一样方便呢,后面的博客我们再做介绍。
一:新建Web项目
二:修改项目的编码UTF-8
三:拷贝Jar包
四:确定使用底层架构,比如使用三层,然后根据架构要求,新建各个sourcefolder以及下面的package
五:创建User和Address实体
User:
package com.cars.mybatis.domain; import java.util.List; public class User { private int id; private String username; private String password; private String nickname; private int type; private List<Address> address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public int getType() { return type; } public void setType(int type) { this.type = type; } public List<Address> getAddress() { return address; } public void setAddress(List<Address> address) { this.address = address; } }Address:
package com.cars.mybatis.domain; public class Address { private int id; private String name; private String phone; private String postcode; private User user; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getPostcode() { return postcode; } public void setPostcode(String postcode) { this.postcode = postcode; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }六:创建init.sql,并在mysql中执行
drop database if exists mybatis1103; create database mybatis1103; grant all on mybatis1103.* to 'root'@'localhost' identified by 'root'; use mybatis1103; create table t_user( id int(11) primary key auto_increment, username varchar(100), password varchar(100), nickname varchar(100), type int(5) ); create table t_address( id int(11) primary key auto_increment, name varchar(255), phone varchar(100), postcode varchar(100), user_id int(11), constraint foreign key(user_id) references t_user(id) );七:配置mybatis-config.xml
在src文件夹下创建mybatis-config.xml文件和jdbc.properties文件
jdbc.properties
username=root password=root url=jdbc:mysql://localhost:3306/mybatis1103 driver=com.mysql.jdbc.Drivermybatis-config.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="jdbc.properties"></properties> <typeAliases> <package name="com.cars.mybatis.domain"></package> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <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> </environments> </configuration>八:创建接口IUserDao,User.xml,和实现类UserDao
IUserDao:
package com.cars.mybatis.dao; import com.cars.mybatis.domain.User; public interface IUserDao { public void add(User user); public void update(User user); public void delete(int id); public User load(int id); }User.xml(和User实体在一个包下)
<?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.cars.mybatis.domain.User"> <insert id="add" parameterType="User"> insert into t_user(username,password,nickname,type) value(#{username},#{password},#{nickname},#{type}) </insert> <update id="update" parameterType="User"> update t_user set password=#{password},nickname=#{nickname},type=#{type} where id=#{id} </update> <delete id="delete" parameterType="int"> delete from t_user where id=#{id} </delete> <select id="load" parameterType="int" resultMap="userMap"> select *,t2.id as 'a_id' from t_user t1 left join t_address t2 on(t1.id = t2.user_id) where t1.id=#{id} </select> <resultMap id="userMap" type="User" autoMapping="true"> <id column="user_id" property="id"/> <collection property="address" ofType="Address"> <id column="a_id" property="id"></id> <result column="phone" property="phone"></result> <result column="postcode" property="postcode"></result> <result column="name" property="name"></result> </collection> </resultMap> </mapper>UserDao:
package com.cars.mybatis.dao; import org.apache.ibatis.session.SqlSession; import com.cars.mybatis.domain.User; import com.cars.mybatis.util.MyBatisUtil; public class UserDao implements IUserDao{ @Override public void add(User user) { SqlSession session = null; try{ session = MyBatisUtil.createSession(); session.insert(user.getClass().getName()+".add",user); session.commit(); }catch(Exception e){ e.printStackTrace(); session.rollback(); }finally{ MyBatisUtil.closeSession(session); } } @Override public void update(User user) { SqlSession session = null; try { session = MyBatisUtil.createSession(); session.update(user.getClass().getName()+".update",user); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); }finally{ MyBatisUtil.closeSession(session); } } @Override public void delete(int id) { SqlSession session = null; try { session = MyBatisUtil.createSession(); session.delete(User.class.getName()+".delete",id); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); }finally{ MyBatisUtil.closeSession(session); } } @Override public User load(int id) { SqlSession session = null; User user = null; try { session = MyBatisUtil.createSession(); user = session.selectOne(User.class.getName()+".load",id); session.commit(); } catch (Exception e) { e.printStackTrace(); session.rollback(); } finally{ MyBatisUtil.closeSession(session); } return user; } }
其中MyBatisUtil是在com.cars.mybatis.util包下
package com.cars.mybatis.util; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil { private static SqlSessionFactory factory; static{ try{ InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); factory = new SqlSessionFactoryBuilder().build(is); }catch(IOException e){ e.printStackTrace(); } } public static SqlSession createSession(){ return factory.openSession(); } public static void closeSession(SqlSession session){ if(session != null) session.close(); } }九:要在mybatis-config.xml文件下加入User.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="jdbc.properties"></properties> <typeAliases> <package name="com.cars.mybatis.domain"></package> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <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> </environments> <mappers> <mapper resource="com/cars/mybatis/domain/User.xml"/> </mappers> </configuration>十:test是否搭建成功
在test文件夹下创建包:com.cars.mybatis.test,并创建类,如下:
package com.cars.mybatis.test; import org.junit.Test; import com.cars.mybatis.dao.IUserDao; import com.cars.mybatis.dao.UserDao; import com.cars.mybatis.domain.Address; import com.cars.mybatis.domain.User; public class TestUserDao { private IUserDao ud = new UserDao(); @Test public void testUserAdd() { User user = new User(); user.setUsername("ls"); user.setPassword("123"); user.setNickname("李四"); user.setType(1); ud.add(user); } @Test public void testUserDelele(){ ud.delete(1); } @Test public void testUserLoad(){ User user = ud.load(3); /*如何实现级联查询*/ for(Address address:user.getAddress()){ System.out.println(address.getName()); } } }
测试通过,则说明我们搭建成功了。
这只是一个简单的搭建流程,至于Mybatis的关联关系如何处理,是不是像Hibernate一样方便呢,后面的博客我们再做介绍。
相关文章推荐
- DL:RBM评估
- 数据库中的几个知识点
- hdoj--2098--分拆素数和(枚举)
- spring事务常见问题、异常分析和解决方法
- 使用Visual Studio进行单元测试-Part4
- 从Oracle中数据库中读取以Blob类型存储的图片显示在jsp页面中
- 基于java的Socket简单知识做的多人聊天室
- Codeforces Round #273 (Div. 2)D. Red-Green Towers DP
- Android中布局优化
- Large Scale Machine Learning--An Engineering Perspective--目录
- android studio入门
- 新建一个Activity通过按钮打开它,再通过按钮关闭它
- 中国大学MOOC-陈越、何钦铭-数据结构 统计工龄
- 英语学习不能断
- C++实现图的十字链表表示及相关各算法
- 代理者模式----设计模式系列
- iOS系统开发:打电话、发短信
- 电压电流到底是什么?
- ubuntu学习小结(2)
- 碰撞检测