lf-driver=com.mysql.jdbc.Driver
lf-url=jdbc:mysql://localhost:3306/test
lf-user=LF
lf-password=LF
<?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="cn.zr.mybatis.mapper.HouseMapper"> <!-- 数据库的表字段与实体类的属性之间的映射 -->
<resultMap type="cn.zr.mybatis.entity.House" id="house">
<id column="addr_city" property="city"/>
<result column="addr_province" property="province"/>
<result column="addr_country" property="country"/>
</resultMap>
<!-- 查询所有数据 -->
<select id="getAllHouse" resultMap="house">
SELECT
addr_city,addr_province,addr_country
FROM HOUSE
</select>
</mapper>
<?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="cn.zr.mybatis.mapper.UserMapper"> <!-- USERTEST 表的字段 -->
<sql id="usertestColumns">
NAME,AGE,ADDRESS
</sql> <!-- 查询USERTEST的所有数据 -->
<select id="getAllUser" resultType="cn.zr.mybatis.entity.User">
SELECT <include refid="usertestColumns"/> FROM USERTEST
</select> <!-- 通过字段来插入用户 -->
<insert id="addUserByWords">
INSERT INTO USERTEST(NAME,AGE,ADDRESS)
VALUES(#{0},#{1},#{2})
</insert> <!-- 插入用户 -->
<insert id="addUser" parameterType="cn.zr.mybatis.entity.User">
INSERT INTO USERTEST VALUES(#{name},#{age},#{address})
</insert> <!-- 批量添加用户 -->
<insert id="bacthUsers" parameterType="cn.zr.mybatis.entity.User">
INSERT INTO USERTEST(<include refid="usertestColumns"/>) VALUES
<foreach collection="list" item="val" separator=",">
(#{val.name},#{val.age},#{val.address})
</foreach>
</insert> <!-- 模糊查询,并实现分页 -->
<select id="queryUserByWord" parameterType="map" resultType="cn.zr.mybatis.entity.User">
<if test="name != null">
<!-- 给name拼接% -->
<bind name="pattern" value=" '%'+name+'%' "/>
SELECT <include refid="usertestColumns"/> FROM USERTEST
<where>
NAME LIKE #{pattern} ORDER BY NAME LIMIT #{star},#{size}
</where>
</if>
</select> <!-- 在给定的区间内查询,并实现分页 -->
<select id="queryUserInScope" parameterType="map" resultType="cn.zr.mybatis.entity.User">
SELECT <include refid="usertestColumns"/> FROM USERTEST WHERE NAME IN
<foreach collection="names" item="value" open="(" close=")" separator=",">
#{value}
</foreach>
LIMIT #{stat},#{size}
</select> <!-- 根据数组中的值进行查询 -->
<select id="queryUserByNames" parameterType="java.lang.String" resultType="cn.zr.mybatis.entity.User">
SELECT <include refid="usertestColumns"/> FROM USERTEST
<where>
NAME IN
<foreach collection="array" item="val" open="(" close=")" separator=",">
#{val}
</foreach>
</where>
</select> </mapper>
<?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="mybatis/config/db.properties"></properties>
<!-- 配置环境 -->
<environments default="development">
<environment id="development">
<!-- 配置事务管理器的类型 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源相关的属性 -->
<dataSource type="UNPOOLED">
<property name="driver" value="${lf-driver}"/>
<property name="url" value="${lf-url}"/>
<property name="username" value="${lf-user}"/>
<property name="password" value="${lf-password}"/>
</dataSource>
</environment>
</environments>
<!--END 配置环境 --> <!-- 配置映射路径 -->
<mappers>
<mapper resource="mybatis/config/mapper/UserMapper.xml"/>
<mapper resource="mybatis/config/mapper/HouseMapper.xml"/>
</mappers>
<!-- END 配置映射路径 --> </configuration>
package cn.zr.mybatis.entity;

public class House {

    private String country;//国家
private String province;//省份
private String city;//城市
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public House() {
super();
}
public House(String country, String province, String city) {
super();
this.country = country;
this.province = province;
this.city = city;
}
@Override
public String toString() {
return "Address [country=" + country + ", province=" + province
+ ", city=" + city + "]";
} }
package cn.zr.mybatis.entity;

public class User {

    private String name;
private Integer age;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public User() {
super();
}
public User(String name, Integer age, String address) {
super();
this.name = name;
this.age = age;
this.address = address;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", address=" + address
+ "]";
} }
package cn.zr.mybatis.mapper;

import java.util.List;

import cn.zr.mybatis.entity.User;

public interface HouseMapper {

    /**
* 查询
* @return 返回相关的房子数据
*/
List<User> getAllHouse(); }
package cn.zr.mybatis.mapper;

import java.util.List;
import java.util.Map; import cn.zr.mybatis.entity.User; public interface UserMapper { /**
* 获取所有数据
*/
public List<User> getAllUser(); /**
* 通过字段插入插入用户
* @param name 用户名
* @param age 年龄
* @param address 地址
* @return 返回成功插入数据的数量
*/
public int addUserByWords(String name, int age, String address); /**
* 插入数据
* @param user 被插入的用户
* @return 返回成功插入数据的数量
*/
public int addUser(User user); /**
* 批量添加用户
* @param list 集合(存储User对象)
* @return 返回成功插入数据的数量
*/
public int bacthUsers(List<User> list); /**
* 模糊查询,并实现分页
* @param map 键值对(存着起始位置,每页的数量,以及模糊查询的数量)
* @return 返回相关的用户数据
*/
public List<User> queryUserByWord(Map<String, Object> map); /**
* 在某个区间内查询,并实现分页
* @param map键值对(存着起始位置,每页的数量,以及区间的范围)
* @return 返回相关的用户数据
*/
public List<User> queryUserInScope(Map<String, Object> map); /**
* 通过数组中的值作为区间进行查询操作
* @param names 区间的值
* @return 返回相关的用户数据
*/
public List<User> queryUserByNames(String[] names); }
package cn.zr.mybatis.service;

import java.util.List;
import java.util.Map; import cn.zr.mybatis.entity.User; public interface UserService { /**
* 获取所有的用户信息
*/
List<User> getAllUser(); /**
* 插入用户
* @param name 用户名
* @param age 年龄
* @param address 地址
* @return 返回成功插入数据的数量
*/
int addUserByWords(String name, int age, String address); /**
* 插入数据
* @param user 被插入的用户
* @return 返回成功插入数据的数量
*/
int addUser(User user); /**
* 批量添加用户
* @param list 集合(存储User对象)
* @return 返回成功插入数据的数量
*/
int bacthUsers(List<User> list); /**
* 模糊查询,并实现分页
* @param map 键值对(存着起始位置,每页的数量,以及模糊查询的数量)
* @return 返回相关的用户数据
*/
List<User> queryUserByWord(Map<String, Object> map); /**
* 在某个区间内查询,并实现分页
* @param map键值对(存着起始位置,每页的数量,以及区间的范围)
* @return 返回相关的用户数据
*/
List<User> queryUserInScope(Map<String, Object> map); /**
* 通过数组中的值作为区间进行查询操作
* @param names 区间的值
* @return 返回相关的用户数据
*/
List<User> queryUserByNames(String[] names); /**
* 查询
* @return 返回相关的房子数据
*/
List<User> getAllHouse(); }
package cn.zr.mybatis.service.impl;

import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Map; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionManager; import cn.zr.mybatis.entity.User;
import cn.zr.mybatis.mapper.HouseMapper;
import cn.zr.mybatis.mapper.UserMapper;
import cn.zr.mybatis.service.UserService; public class UserServiceImpl implements UserService{ private static SqlSessionManager manager;
private UserMapper userMapper;
private HouseMapper houseMapper; {
// 配置文件的路径
String resource = "mybatis/config/mybatis-config.xml";
try {
// 将配置文件读取进来
Reader reader = Resources.getResourceAsReader(resource);
// 根据读取进来的配置文件创建SqlSessionManager对象
manager = SqlSessionManager.newInstance(reader);
//创建映射关系
userMapper = manager.getMapper(UserMapper.class);
//创建映射关系
houseMapper = manager.getMapper(HouseMapper.class); } catch (IOException e) {
e.printStackTrace();
}
} @Override
public List<User> getAllUser() {
//userMapper调用接口的相关方法
return userMapper.getAllUser();
} @Override
public int addUserByWords(String name, int age, String address) {
return userMapper.addUserByWords(name,age,address);
} @Override
public int addUser(User user) {
return userMapper.addUser(user);
} @Override
public int bacthUsers(List<User> list) {
return userMapper.bacthUsers(list);
} @Override
public List<User> queryUserByWord(Map<String, Object> map) {
return userMapper.queryUserByWord(map);
} @Override
public List<User> queryUserInScope(Map<String, Object> map) {
return userMapper.queryUserInScope(map);
} @Override
public List<User> queryUserByNames(String[] names) {
return userMapper.queryUserByNames(names);
} @Override
public List<User> getAllHouse() {
return houseMapper.getAllHouse();
} }
package cn.zr.mybatis.test;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionManager;
import org.junit.Before;
import org.junit.Test; import cn.zr.mybatis.entity.House;
import cn.zr.mybatis.entity.User;
import cn.zr.mybatis.mapper.UserMapper;
import cn.zr.mybatis.service.UserService;
import cn.zr.mybatis.service.impl.UserServiceImpl;
/**
*
* @author lf
* 2017年2月13日
* 通过接口调用相关方法
*/
public class TestMybatis { // public static void main(String[] args) {
// TestMybatis testMybatis = new TestMybatis();
// testMybatis.addUserAndAddress();
//
// } private SqlSessionManager manager;
private UserService userService; {
//创建实现类
userService = new UserServiceImpl();
}
/**
* 获取所有数据
*/
@Test
public void getAllData() { // 调用相关方法
List<User> list = userService.getAllUser();; System.out.println(list);
} /**
* 通过字段来添加用户
*/
@Test
public void addUserByWords() {
int count = userService.addUserByWords("lffff",18,"beijing");
if (count > 0) {
System.out.println("成功插入"+count+"条数据");
}else {
System.out.println("插入操作失败");
}
} /**
* 添加用户
*/
@Test
public void addUser () {
User user = new User("dew",18,"hubei");
int count = userService.addUser(user);
if (count > 0) {
System.out.println("成功插入"+count+"条数据");
}else {
System.out.println("插入操作失败");
}
} /**
* 批量增加用户
*/
@Test
public void bacthUsers(){
// 创建list
List<User> list = new ArrayList<User>();
list.add(new User("asd", 23, "China"));
list.add(new User("ad", 23, "China"));
list.add(new User("asddd", 23, "China"));
list.add(new User("aswwd", 23, "China"));
list.add(new User("asqwqd", 23, "China")); int count = userService.bacthUsers(list);
if (count > 0) {
System.out.println("成功插入"+count+"条数据");
}else {
System.out.println("插入操作失败");
}
} /**
* 模糊查询,并实现分页效果
*/
@Test
public void queryUserByWord() {
int star = 0;// 起始位置
int size = 3;// 每页的条数
Map<String, Object> map = new HashMap<String, Object>();
map.put("star", star);
map.put("size", size);
map.put("name", "a"); List<User> list = userService.queryUserByWord(map);
if (list.size() > 0) {
System.out.println(list);
}else {
System.out.println("操作失败");
}
} /**
* 区间分页查询
*/
@Test
public void queryUserInScope() {
// 创建list
List<String> list = new ArrayList<String>();
list.add("asd");
list.add("ad");
list.add("asddd");
list.add("aswwd");
list.add("asqwqd");
int stat = 1;//起始位置
int size = 3;//每页显示的数量
//创建Map
Map<String, Object> map = new HashMap<String, Object>();
map.put("stat", stat);
map.put("size", size);
map.put("names", list); List<User> reseultList = userService.queryUserInScope(map);
if (reseultList.size() > 0) {
System.out.println(reseultList);
}else {
System.out.println("操作失败");
}
} /**
* 通过数组中的值作为区间取查询
*/
@Test
public void queryUserByNames() { String[] names = {"asddd","aswwd","asqwqd"};
List<User> list = userService.queryUserByNames(names);
if (list.size() > 0) {
System.out.println(list);
}else {
System.out.println("操作失败");
}
} /**
* 查询所有数据
*/
@Test
public void getAllHouse(){
List<User> list = userService.getAllHouse();
if (list.size() > 0) {
System.out.println(list);
}else {
System.out.println("操作失败");
}
} }

mybatis 框架 的应用之二(批量添加、实现分页查询)的更多相关文章

  1. MyBatis简单的增删改查以及简单的分页查询实现

    MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...

  2. Spring+SpringMvc+Mybatis框架集成搭建教程二(依赖配置及框架整合)

    依赖导入以及框架整合 (1).打开项目的pom.xml文件,声明依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" x ...

  3. Spring+SpringMvc+Mybatis 框架的搭建(二)

    4.4 mybatis-config.xml 这部分可以配置也可以不配置. <?xml version="1.0" encoding="UTF-8" ?& ...

  4. 框架搭建资源 (二) 添加M(模型)

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xm ...

  5. MyBatis一对多嵌套list返回结果集以及分页查询问题处理

    这两天在整理原有系统接口时,遇到后端的人员-角色-菜单的权限接口没有进行连表的关联查询操作,前端拿数据非常不方便,现在将接口相关sql进行修改并让前端可以一次性拿到想要的数据 原有的单表简单sql: ...

  6. Mybatis 批量添加,批量更新

    此篇适合有一定的mybatis使用经验的人阅读. 一.批量更新 为了提升操作数据的效率,第一想到的是做批量操作,直接上批量更新代码: <update id="updateBatchMe ...

  7. Spring+SpringMvc+Mybatis框架集成搭建教程

    一.背景 最近有很多同学由于没有过SSM(Spring+SpringMvc+Mybatis , 以下简称SSM)框架的搭建的经历,所以在自己搭建SSM框架集成的时候,出现了这样或者那样的问题,很是苦恼 ...

  8. MyBatis框架——动态SQL

    MyBatis 作为⼀个“半⾃动化”的 ORM 框架,需要开发者⼿动定义 SQL 语句. 在业务需求⽐较复杂的情 况下,⼿动拼接 SQL 语句的⼯作量会⾮常⼤,为了适⽤于不同的业务需求,往往需要做很多 ...

  9. SpringBoot整合Mybatis关于分页查询的方法

    最近公司在用到SpringBoot整合Mybatis时当web端页面数据增多时需要使用分页查询以方便来展示数据.本人对分页查询进行了一些步骤的总结,希望能够帮助到有需要的博友.如有更好的方式,也希望评 ...

随机推荐

  1. phpcms v9 tags调用方法

    {loop $keywords $keyword} <a href="{APP_PATH}index.php?m=content&c=tag&catid={$catid ...

  2. win7C盘不够用怎么办

    Windows 7 是由微软公司(Microsoft)开发的操作系统,核心版本号为Windows NT 6.1.Windows 7 可供家庭及商业工作环境.笔记本电脑.平板电脑.多媒体中心等使用. 工 ...

  3. oracle 删除当前用户下多个表

    1.执行Sql语句: select 'drop table '||table_name||';' from cat where table_type='TABLE' 可查询到当前用户下所有的表,如图: ...

  4. 洛谷P1979 华容道

    神の契约 题目大意:自己看去... 题解:做了一下午...本蒟蒻立志要写全网最详细的题解.╭(╯^╰)╮ begin.... 暴力70分.可以让空格子到处乱走,只要某个状态的指定格子到目标格子,那么此 ...

  5. Quartz数据库脚本

    QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息 QRTZ_CRON_TRIGGERS 存储 Cron Trigger,包括 Cron表达式和时区信息  ...

  6. UCloud 云服务器硬盘扩容后 如何挂载到本机

    UCloud 云服务器硬盘扩容后如何挂载到本机 UCloud 提供的云服务器会根据不同的系统初始化不同空间大小的硬盘资源,此资源默认为 系统盘. 针对 Linux 系统默认初始化 20G 的空间,一般 ...

  7. ASP.NET WebApi通过自定义ControllerSelector来自定义Controller的选择

    在web api中,我们可以通过给Cotroller类添加RoutePrefixAttribute来定义url与Controller之间的映射,但是有时候有一些特殊情况下,我们需要做一些特殊处理来将某 ...

  8. sonar 获取扫描结果(二)

    1.requestHeader中添加 消息头, key:Authorization,value:用户名:密码base64加密,再拼接字符串 "Basic "+base64加密结果( ...

  9. 使用CMake生成sln项目和VS工程遇到的问题

    用vs运行cmake后的工程 参考:http://zhidao.baidu.com/link?url=AZRxI0jGDzo6Pikk68qylee0g7leXbpbZGiVuyiijWbd8scUK ...

  10. thinkphp中的_initialize方法

    子类的_initialize方法自动调用父类的_initialize方法.而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct( ...