1.创建javaWeb项目MyBatis_dynamicSQL并在WebRoot下的WEB-INF下的lib下添加如下jar文件

cglib-nodep-2.1_3.jar

log4j-1.2.17.jar

mybatis-3.2.3.jar

ojdbc14.jar

创建如下userinfo.sql

SQL> create table userinfo
(id number(4),
name varchar2(50),
password varchar2(20
telephone varchar2(15),
isadmin varchar2(5));

SQL> --4.2 用户表序列
SQL> create sequence seq_userinfo;

SQL> alter table userinfo add constraint pk_userinfo_id primary key(id);

SQL> insert into userinfo values(seq_userinfo.nextval,'holly','123','134518024
','是');

SQL> commit;

2.在src下创建log4j.properties日志文件

log4j.properties

3..在src下创建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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
<property name="username" value="system"/>
<property name="password" value="accp"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mapper/UserInfoMapper.xml"/>
</mappers>
</configuration>

Configuration.xml

4.在src下com.entity包下创建UserInfo.java

 package com.entity;

 import java.util.ArrayList;
import java.util.List; /**
* 用户信息表
* @author Dell
*
*/
public class UserInfo {
private Integer id; //编号
private String name; //姓名
private String password; //密码
private String telephone; //电话
private String isadmin; //是否是管理员
private List<Integer> ids=new ArrayList<Integer>(); public UserInfo() {
} public UserInfo(Integer id, String name, String password, String telephone,
String isadmin) {
this.id = id;
this.name = name;
this.password = password;
this.telephone = telephone;
this.isadmin = isadmin;
} public UserInfo(String name, String password) {
this.name = name;
this.password = password;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getTelephone() {
return telephone;
} public void setTelephone(String telephone) {
this.telephone = telephone;
} public String getIsadmin() {
return isadmin;
} public void setIsadmin(String isadmin) {
this.isadmin = isadmin;
} public List<Integer> getIds() {
return ids;
} public void setIds(List<Integer> ids) {
this.ids = ids;
} @Override
public String toString() {
return "UserInfo [id=" + id + ", ids=" + ids + ", isadmin=" + isadmin
+ ", name=" + name + ", password=" + password + ", telephone="
+ telephone + "]";
} }

UserInfo.java

5.在src下com.util包下创建MyBatisUtil.java
MyBatisUtil.java

6.在src下com.mapper包下创建UserInfoMapper.java接口

 package com.mapper;

 import java.util.List;

 import com.entity.UserInfo;
/**
* 数据访问层接口
* @author pc
*
*/
public interface UserInfoMapper {
/**
* 1.根据用户信息查询某个用户
* @param userinfo
* @return
*/
UserInfo findNamePwd(UserInfo userinfo); /**
* 2.添加用户信息
* @param userinfo
*/
void addUserInfo(UserInfo userinfo); /**
* 3.查询所有
* @return
*/
List<UserInfo> findAll(UserInfo userinfo); /**
* 4.删除
* @param id
*/
void deleteUser(int id);
/**
* 5.修改
* @param userinfo
*/
void updateUser(UserInfo userinfo); /**
* 6.根据id查询
*/
UserInfo findId(int id);
}

UserInfoMapper.java

7.在src下com.mapper包下创建UserInfoMapper.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.mapper.UserInfoMapper">
<!-- 定义sql片段,该片段中不包含where,也就是定义公共sql部分 -->
<sql id="id_where">
<if test="id!=null and id!=''">
and id=#{id}
</if>
</sql> <!-- 根据用户查询用户 -->
<select id="findNamePwd" parameterType="com.entity.UserInfo" resultType="com.entity.UserInfo">
select * from userinfo
<!-- 动态sql -->
<where> <!--name,password,这个参数是输入参数对象的 属性-->
<if test="name!=null and name!=''">
and name=#{name}
</if>
<if test="password!=null and password!=''">
and password=#{password}
</if>
</where> </select> <!-- 插入用户信息 -->
<insert id="addUserInfo" parameterType="com.entity.UserInfo">
insert into userinfo values(seq_userinfo.nextval,#{name},#{password},#{telephone},#{isadmin})
</insert> <!-- 查询所有 -->
<select id="findAll" resultType="com.entity.UserInfo" parameterType="com.entity.UserInfo">
select * from userinfo
<where>
<if test="ids!=null">
<foreach collection="ids" item="id" open="and id in(" close=")" separator=",">
#{id}
</foreach>
</if>
</where>
</select> <!-- 删除 -->
<delete id="deleteUser" parameterType="int">
delete from userinfo
<!-- 动态sql中引用sql片段 --> <where>
<!-- 引用sql片段的id,如果refid指定的不在本映射文件中,需要前面加namespace -->
<include refid="id_where"/>
<!-- 这里可以引用其他的sql片段 -->
</where>
where id=#{id}
</delete> <!-- 修改 -->
<update id="updateUser" parameterType="com.entity.UserInfo">
update userinfo set name=#{name},password=#{password},telephone=#{telephone},isadmin=#{isadmin} where id=#{id}
</update> <!-- 根据id查询 -->
<select id="findId" parameterType="int" resultType="com.entity.UserInfo">
select * from userinfo where id=#{id} </select> </mapper>

UserInfoMapper.xml

8.在src下com.test包下创建Test.java

 package com.test;

 import java.util.ArrayList;
import java.util.List; import org.apache.ibatis.session.SqlSession; import com.entity.UserInfo;
import com.mapper.UserInfoMapper;
import com.util.MybatisUtil; public class Test { /**
* @param args
*/
public static void main(String[] args) {
SqlSession sqlSession=MybatisUtil.getSqlSession(false);
UserInfoMapper mapper=sqlSession.getMapper(UserInfoMapper.class);
UserInfo userinfo=new UserInfo("李杰", "123");
// UserInfo info=mapper.findNamePwd(userinfo);
// if(info!=null){
// System.out.println("登陆成功");
// }else{
// System.out.println("登陆失败");
//
// } List<Integer> ids=new ArrayList<Integer>();
ids.add(22);
ids.add(23);
ids.add(24);
userinfo.setIds(ids); List<UserInfo> userin=mapper.findAll(userinfo);
System.out.println(userin); } }

Test.java

8.MyBatos的动态Sql的更多相关文章

  1. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

  2. Mysql - 游标/动态sql/事务

    游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...

  3. MyBatis4:动态SQL

    什么是动态SQL MyBatis的一个强大特性之一通常是它的动态SQL能力.如果你有使用JDBC或其他相似框架的经验,你就明白条件串联SQL字符串在一起是多么地痛苦,确保不能忘了空格或者在列表的最后的 ...

  4. 分享公司DAO层动态SQL的一些封装

    主题 公司在DAO层使用的框架是Spring Data JPA,这个框架很好用,基本不需要自己写SQL或者HQL就能完成大部分事情,但是偶尔有一些复杂的查询还是需要自己手写原生的Native SQL或 ...

  5. MySQL存储过程动态SQL语句的生成

    用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...

  6. 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】

    一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...

  7. 自定义函数执行动态sql语句

    --函数中不能调用动态SQL,使用用存储过程吧.如果还要对函数做其他操作,换成存储过程不方便,可以考虑把其他操作一起封装在存储过程里面.如:   create proc [dbo].[FUN_YSCL ...

  8. mybatis入门基础(五)----动态SQL

    一:动态SQL 1.1.定义 mybatis核心对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 1.2.案例需求 用户信息综合查询列表这个statement的定义使用动态s ...

  9. mybatis 动态sql表达式相关应用

    一.mybatis 表达式简介 对于mybatis3 ,提供了一种动态sql的方式.通过动态sql我们可以直接在mybatis 的xm映射文件中直接通过条件判断的方式进行查询添加的拼接.mybatis ...

随机推荐

  1. 程序处理数据库中值字段值为null的查询显示

    1.如果你做了一个简单的注册界面,需要用户进行注册,但有些项是不必要填的,当用户完成注册时,数据库表中的相应字段的值会写入null,但如何将查询的字段的值null显示出来? 2.首先我们学习一下如何向 ...

  2. UIKit类结构图

  3. DateDiff函数

    在MySQL中可以使用DATEDIFF()函数计算两个日期之间的天数 语法: datediff(date1,date2) 注:date1和date2需是合法的日期或日期/时间表达式 例1 SELECT ...

  4. 三.redis 排序

    本篇文章介绍下redis排序命令.redis支持对list,set和sorted set元素的排序.排序命令是sort 完整的命令格式如下: SORT key [BY pattern] [LIMIT ...

  5. hdu1686

    题目意思:找到上串在下串中有多少个 Problem Description The French author Georges Perec (1936–1982) once wrote a book, ...

  6. Twitter Storm:单机环境的安装与配置

    Twitter Storm:单机环境的安装与配置 好久没写博客了,这一段时间一直被导师push着做毕业设计.由于目前的方向偏向于图像识别检索,毕设打算做一个基于分布式计算平台的图像检索系统,查阅相关资 ...

  7. 使用SmsManager服务群发短信

    SmsManager是Android提供的一个非常常见的服务,SmsManager提供了一系列sendXxxMessage()方法用于发送短信,不过短信通常都是普通文本,调用sendTextMessa ...

  8. oracle报表开发方案

    PL/SQL也是一门语言,后台开发经常会用到. 目前做要到一个功能,关于"报表任务调度",说明白了就是做几张报表,每天统计一次新数据,用于在PC页面上显示,我苦思冥想了几天,总结出 ...

  9. [ios-必看] WWDC 2013 Session笔记 - iOS7中的多任务【转】

    感谢:http://onevcat.com/2013/08/ios7-background-multitask/ http://www.objc.io/issue-5/multitasking.htm ...

  10. ps 如何裁切图片成一定的长宽高比例

    1打开一张图片然后点击拆件工具然后在面板上长宽高,按enter键盘,OK拆建完成