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. Dotliquid使用Json模板变量

    Dotliquid是不错的Template Engine,为了更方便使用,扩展了一下,使它支持json数据的替换,引用了Newtonsoft.Json.Linq /// <summary> ...

  2. Dynamic CRM 2013 on Windows Azure VM

    三个A2 Size的VM,运行Windows Server 2012: AD Server,SQL Server,App Server 将AD Server的ip地址填写到Windows Azure虚 ...

  3. STM8S TIM1 PWM初始化设置

    #define TIM1_DIV1 (uint16)(1-1) #define TIM1_DIV2 (uint16)(2-1) #define TIM1_DIV4 (uint16)(4-1) #def ...

  4. 如何制作一个类似Tiny Wings的游戏 Cocos2d-x 2.1.4

    在第一篇<如何使用CCRenderTexture创建动态纹理>基础上,增加创建动态山丘,原文<How To Create A Game Like Tiny Wings with Co ...

  5. 用CATransform3D实现3D效果和制作简单3D动画

    我们先来看下CATransform3D的头文件 struct CATransform3D { CGFloat m11, m12, m13, m14; CGFloat m21, m22, m23, m2 ...

  6. 【C语言】一些重要的知识点

    1.#include <stdio.h> #include 是C语言的预处理指令之一,所谓预处理,就是在编译之前做的处理,预处理指令一般以 # 开头 #include 指令后面会跟着一个文 ...

  7. gRPC helloworld service, RESTful JSON API gateway and swagger UI

    概述 本篇博文完整讲述了如果通过 protocol buffers 定义并启动一个 gRPC 服务,然后在 gRPC 服务上提供一个 RESTful JSON API 的反向代理 gateway,最后 ...

  8. es6笔记2^_^array

    一.Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Se ...

  9. html - table 表格不被撑开,td某些列宽度固定某些列自适应

    table-layout 属性的解释:http://www.w3school.com.cn/cssref/pr_tab_table-layout.asp 1,实现table细边框,设置如下css: t ...

  10. 办理渥太华大学(本科)学历认证『微信171922772』Ottawa U学位证成绩单使馆认证University of Ottawa

    办理渥太华大学(本科)学历认证『微信171922772』Ottawa U学位证成绩单使馆认证University of Ottawa QQ/微信171922772办理毕业证成绩单.真实使馆及教育部学历 ...