MyBatis学习(二) - 初探Mapper XML 文件
来源:互联网 发布:童话淘宝店 编辑:程序博客网 时间:2024/04/29 07:30
发现一个MyBatis博客,讲的挺好的:http://legend2011.blog.51cto.com/3018495/908956
官方教程:http://mybatis.github.com/mybatis-3/zh/sqlmap-xml.html
官方的教程是中文的,讲的很好,一定要看啊。
一.Mapper XML 文件
MyBatis 真正的力量是在映射语句中。这里是奇迹发生的地方。对于所有的力量,SQL映射的 XML 文件是相当的简单。当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 95%的代码量。MyBatis 的构建就是聚焦于 SQL 的,使其远离于普通的方式。
SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):
- cache – 配置给定命名空间的缓存。
- cache-ref – 从其他命名空间引用缓存配置。
- resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。
parameterMap – 已经被废弃了!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除。这里不会记录。- sql – 可以重用的 SQL 块,也可以被其他语句引用。
- insert – 映射插入语句
- update – 映射更新语句
- delete – 映射删除语句
- select – 映射查询语句
二.示例
这里就简单的实现以下增删改查:
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="org.ygy.mapper.UserMapper">
-
-
- <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="id">
-
- insert into t_user(name , password , email , gender , age)
- values(#{name} , #{password} , #{email} , #{gender} , #{age})
- </insert>
-
-
- <update id="update" parameterType="User">
- update t_user set
- name=#{name},password=#{password},email=#{email},gender=#{gender},age=#{age}
- where id=#{id}
- </update>
-
-
- <delete id="delete" parameterType="int">
- delete from t_user where id=#{id}
- </delete>
-
-
- <select id="selectUser" resultType="User">
- select * from t_user
- </select>
-
-
- <select id="queryById" parameterType="int" resultType="User">
- select * from t_user where id=#{id}
- </select>
-
-
- <select id="queryByName" parameterType="String" resultType="User">
- select *from t_user where name=#{name}
- </select>
-
- </mapper>
UserDao.java- package org.ygy.dao;
-
- import java.util.List;
-
- import org.ygy.model.User;
-
-
-
-
-
-
- public interface UserDao {
-
-
-
-
-
- public int insert(User user);
-
-
-
-
-
-
- public int update(User user);
-
-
-
-
-
-
- public int delete(int id);
-
-
-
-
-
- public List<User> selectUser();
-
-
-
-
-
-
- public User queryById(int id);
-
-
-
-
-
-
- public User queryByName(String name);
- }
UserDaoImpl.java- package org.ygy.dao.impl;
-
- import java.util.List;
-
- import org.apache.ibatis.session.SqlSession;
- import org.ygy.dao.UserDao;
- import org.ygy.model.User;
- import org.ygy.util.MyBatisUtil;
-
-
-
-
-
-
- public class UserDaoImpl implements UserDao {
-
- @Override
- public int insert(User user) {
-
- SqlSession session = MyBatisUtil.getSession();
-
-
- int affectedRows = session.insert("org.ygy.mapper.UserMapper.insert" , user);
-
-
- session.commit();
-
- session.close();
-
- return affectedRows;
- }
-
- @Override
- public int update(User user) {
- SqlSession session = MyBatisUtil.getSession();
-
- int affectedRows = session.update("org.ygy.mapper.UserMapper.update" , user);
-
- session.commit();
- session.close();
-
- return affectedRows;
- }
-
- @Override
- public int delete(int id) {
- SqlSession session = MyBatisUtil.getSession();
-
- int affectedRows = session.delete("org.ygy.mapper.UserMapper.delete" , id);
-
- session.commit();
- session.close();
-
- return affectedRows;
- }
-
- @Override
- public List<User> selectUser() {
- SqlSession session = MyBatisUtil.getSession();
-
- List<User> userList = session.selectList("org.ygy.mapper.UserMapper.selectUser");
-
- session.commit();
- session.close();
-
- return userList;
- }
-
- @Override
- public User queryById(int id) {
- SqlSession session = MyBatisUtil.getSession();
-
- User user = session.selectOne("org.ygy.mapper.UserMapper.queryById" , id);
-
- session.commit();
- session.close();
-
- return user;
- }
-
- @Override
- public User queryByName(String name) {
- SqlSession session = MyBatisUtil.getSession();
-
- User user = session.selectOne("org.ygy.mapper.UserMapper.queryByName" , name);
-
- session.commit();
- session.close();
-
- return user;
- }
-
- }
UserDaoTest.java
- package org.ygy.dao;
-
- import static org.junit.Assert.assertEquals;
-
- import java.util.List;
-
- import org.junit.Before;
- import org.junit.Test;
- import org.ygy.dao.impl.UserDaoImpl;
- import org.ygy.model.User;
-
- public class UserDaoTest {
- private UserDao userDao = null;
-
- @Before
- public void before() {
- userDao = new UserDaoImpl();
- }
-
- @Test
- public void testInsert() {
- User user = new User();
- user.setName("乔巴");
- user.setPassword("qiaoba");
- user.setAge(23);
- user.setGender(0);
- user.setEmail("qiaoba@op.com");
-
- assertEquals(1 , userDao.insert(user));
- }
-
- @Test
- public void testQueryByName() {
- User user = userDao.queryByName("乔巴");
-
- System.out.println("user->" + user);
- }
-
- @Test
- public void testQueryById() {
- User user = userDao.queryById(4);
-
- System.out.println("user->" + user);
- }
-
- @Test
- public void testUpdate() {
- User user = userDao.queryByName("乔巴");
- user.setName("七段变身-乔巴");
-
- userDao.update(user);
- }
-
- @Test
- public void testDelete() {
- assertEquals(1 , userDao.delete(3));
- }
-
- @Test
- public void testSelectUser() {
- List<User> userList = userDao.selectUser();
-
- for(User each : userList) {
- System.out.println("each->" + each);
- }
- }
-
- }
0 0