文档章节

MyBatis入门(四)---动态SQL

z
 zh151832
发布于 2015/11/03 18:09
字数 1093
阅读 10
收藏 0

MyBatis入门(四)---动态SQL

一、创建数据库表

1.1、创建表

 

复制代码
USE `mybatis`; /*Table structure for table `user` */ DROP TABLE IF EXISTS `user`; CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `name` varchar(45) NOT NULL DEFAULT '无名氏' COMMENT '用户名',
  `age` tinyint(3) NOT NULL DEFAULT '21' COMMENT '用户年龄',
  `birthday` datetime NOT NULL DEFAULT '1970-01-01 00:00:00' COMMENT '用户生日',
  `address` varchar(256) NOT NULL DEFAULT '北京' COMMENT '用户地址', PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='用户表'; /*Data for the table `user` */ insert into `user`(`id`,`name`,`age`,`birthday`,`address`) values (1,'赵敏',23,'1990-01-23 20:24:21','明教'),
(2,'李四',18,'1986-12-23 12:13:11','广州'),
(3,'张五',33,'1975-09-23 02:13:11','上海'),
(4,'王六',27,'1984-11-01 11:23:14','重庆'),
(5,'张三丰',108,'1971-01-02 02:12:11','武当'),
(6,'想起 来叫什么了',22,'1984-01-23 20:23:22','魔都上海'),
(7,'呵呵',22,'1984-01-23 20:23:22','不知道是哪的'),
(8,'张无忌',18,'2015-10-28 15:31:31','明教');
复制代码

 

 

 

二、创建项目导入Jar包

2.1、

三、创建实现类和Mybatis各个配置文件 

3.1、创建pojo类

 

复制代码
/** */ package com.pb.mybatis.po; import java.util.Date; /** * @Title: User.java

 * @Package com.pb.mybatis.po

 * @ClassName User

 * @Description: TODO(用户类)

 * @author 刘楠 

 * @date 2015-10-30 下午4:27:05

 * @version V1.0 */ public class User { //用户ID private int id; //用户名 private String name; //用户年龄 private int age; //生日 private Date birthday; //地址 private String address; /** * @return the id */ public int getId() { return id;
    } /** * @param id the id to set */ public void setId(int id) { this.id = id;
    } /** * @return the name */ public String getName() { return name;
    } /** * @param name the name to set */ public void setName(String name) { this.name = name;
    } /** * @return the age */ public int getAge() { return age;
    } /** * @param age the age to set */ public void setAge(int age) { this.age = age;
    } /** * @return the birthday */ public Date getBirthday() { return birthday;
    } /** * @param birthday the birthday to set */ public void setBirthday(Date birthday) { this.birthday = birthday;
    } /** * @return the address */ public String getAddress() { return address;
    } /** * @param address the address to set */ public void setAddress(String address) { this.address = address;
    } /** (non Javadoc)
    
     * <p>Title: toString</p>
    
     * <p>Description: </p>
    
     * @return * @see java.lang.Object#toString() */ @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + ", birthday=" + birthday + ", address=" + address + "]";
    }
    
    

}
复制代码

 

3.2、创建db.properties

 

复制代码
#数据库基本配置信息
#驱动
jdbc.driver=com.mysql.jdbc.Driver
#连接URL
jdbc.url=jdbc:mysql://localhost:3306/mybatis?CharacterEncoding=utf8 #用户名
jdbc.username=root
#密码
jdbc.password=root
复制代码

log4j

复制代码
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
复制代码

 

3.3、创建UserMapper与mapper.xml

 

复制代码
/** */ package com.pb.mybatis.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import com.pb.mybatis.po.User; /** * @Title: UserMapper.java

 * @Package com.pb.mybatis.mapper

 * @ClassName UserMapper

 * @Description: TODO(用户类数据访问层Mapper接口)

 * @author 刘楠 

 * @date 2015-10-30 下午6:17:43

 * @version V1.0 */ public interface UserMapper { public User findUserById(int id); /** * 
     * @Title: findUserByWhere
    
     * @Description: TODO(根据条件查询用户)
    
     * @return List<User> */ public List<User> findUserByWhere(@Param("id") int id,@Param("name")String username); /** * 
     * @Title: updateUser
    
     * @Description: TODO(修改)
    
     * @param user
     * @return int */ public int updateUser(User user);

}
复制代码

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.pb.mybatis.mapper.UserMapper">
<!-- 映射 -->

<resultMap type="User" id="userResultMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<result property="birthday" column="birthday"/>
<result property="address" column="address"/>
</resultMap>


<select id="findUserById" parameterType="int" resultMap="userResultMap"> select * from user where id=#{id} </select>



<!-- 根据条件查询用户 -->
<select id="findUserByWhere" resultMap="userResultMap"> select * from user <where>
<!--where会自动去掉第一个成功的条件的and和or  -->
<if test="id!=null and id!='' and id!=0"> and id=#{id} </if>
<if test="name!=null and name!=''"> or name like "%"#{name}"%"
</if>
</where>
</select>


<!--修改  
SET NAME=#{name},
age=#{age},
birthday=#{birthday},
address=#{address} -->
<update id="updateUser" parameterType="User"> UPDATE USER <!--使用SET来更新  -->
<set>
<if test="name !=null and name !=''">NAME=#{name},</if>
<if test="age !=null  and age !='' and age !=0">age=#{age},</if>
<if test="birthday !=null">birthday=#{birthday},</if>
<if test="address !=null and address !=''">address=#{address}</if>
</set> WHERE id=#{id} </update>

</mapper>
复制代码

 

3.4、创建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" />
<typeAliases>
<!--使用默认别名  -->
<package name="com.pb.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>
<!-- 加载映射 -->
<package name="com.pb.mybatis.mapper"/>
</mappers>
</configuration>
复制代码

 

3.5、测试

 

复制代码
/** */ package com.pb.mybatis.mapper; import static org.junit.Assert.*; import java.io.InputStream; 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.pb.mybatis.po.User; /** * @Title: UserMapperTest.java

 * @Package com.pb.mybatis.mapper

 * @ClassName UserMapperTest

 * @Description: TODO(用一句话描述该文件做什么)

 * @author 刘楠 

 * @date 2015-10-30 下午6:25:23

 * @version V1.0 */ public class UserMapperTest { private SqlSessionFactory sqlSessionFactory; /** * 
     * @Title: setUp
    
     * @Description: TODO(在每个方法前执行的方法)
    
     * @throws Exception void */ @Before public void setUp() throws Exception {
        String resource="configuration.xml";
        InputStream in=Resources.getResourceAsStream(resource); //获取会话工厂 sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
    }
    
    @Test public void testFindUserById() { //获取会话 SqlSession sqlSession=sqlSessionFactory.openSession();
        UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
        User user=userMapper.findUserById(1);
        System.out.println(user);
    }
    
    @Test public void testFindUserByWhere() { //获取会话 SqlSession sqlSession=sqlSessionFactory.openSession();
        UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
        List<User> list=userMapper.findUserByWhere(0,"");
        System.out.println(list);
    }

    @Test public void testUpdateUser() { //获取会话 SqlSession sqlSession=sqlSessionFactory.openSession();
        UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
        User user=userMapper.findUserById(6);
        System.out.println(user);
        user.setBirthday(new Date());
        
        user.setName("sssss");
        user.setAddress("ddd"); int num=userMapper.updateUser(user);
        sqlSession.commit();
        System.out.println("num="+num);
        
    }
}

本文转载自:http://www.cnblogs.com/liunanjava/p/4919815.html

z
粉丝 7
博文 106
码字总数 46061
作品 0
攀枝花
私信 提问
深入浅出MyBatis_Index

深入浅出MyBatis系列 【深入浅出MyBatis系列一】MyBatis入门 【深入浅出MyBatis系列二】配置简介(MyBatis源码篇) 【深入浅出MyBatis系列三】Mapper映射文件配置 【深入浅出MyBatis系列四】...

陶邦仁
2015/12/22
1K
0
基于MyBatis的增删改查的基础操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/81482092 MyBtais入门 Mybatis和hibernate的区别 2.MyBatis的入门程序 2.1 在项目中...

杨校
2018/08/07
0
0
基于MyBatis的增删改查操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/81484334 MyBtais入门 Mybatis和hibernate的区别 2.MyBatis的入门程序 2.1 在项目中...

杨校
2018/08/07
0
0
MyBatis入门学习教程 MyBatis快速入门1-8(2)

上一章:http://my.oschina.net/u/2608629/admin/edit-blog?blog=715422 上一篇MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个...

筱飞
2016/07/21
91
0
【深入浅出MyBatis系列四】强大的动态SQL

深入浅出MyBatis系列 【深入浅出MyBatis系列一】MyBatis入门 【深入浅出MyBatis系列二】配置简介(MyBatis源码篇) 【深入浅出MyBatis系列三】Mapper映射文件配置 【深入浅出MyBatis系列四】...

陶邦仁
2015/12/22
2.5K
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
15分钟前
2
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
今天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部