栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis学习笔记(二)之关联关系

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis学习笔记(二)之关联关系

今天主要学习的关联关系是一对一关系与一对多关系。

一、一对一关系

还是通过例子来解释说明。(一个妻子对应一个丈夫)。

1)数据库信息

create table t_wife(
id int primary key auto_increment,
wife_name varchar(),
fk_husband_id int
);
create table t_husband(
id int primary key auto_increment,
husband_name varchar()
);
insert into t_husband values (null,'hello');
insert into t_wife values(null,'kitty',) 

2)对应的JavaBean代码

虽然在数据库里只有一方配置的外键,但是这个一对一是双向的关系。

HusbandBean.java

package com.cy.mybatis.beans;
import java.io.Serializable;

public class HusbandBean implements Serializable{
private static final long serialVersionUID = L;
private Integer id;
private String name;
private WifeBean wife;
public HusbandBean() {
super();
}
public HusbandBean(Integer id, String name, WifeBean wife) {
super();
this.id = id;
this.name = name;
this.wife = wife;
}
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 WifeBean getWife() {
return wife;
}
public void setWife(WifeBean wife) {
this.wife = wife;
}
@Override
public String toString() {
return "Husband [id=" + id + ", name=" + name + ", wife=" + wife + "]";
}
}

WifeBean.java

package com.cy.mybatis.beans;
import java.io.Serializable;

public class WifeBean implements Serializable{
private static final long serialVersionUID = L;
private Integer id;
private String name;
private HusbandBean husband;
public WifeBean() {
super();
}
public WifeBean(Integer id, String name, HusbandBean husband) {
super();
this.id = id;
this.name = name;
this.husband = husband;
}
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 HusbandBean getHusband() {
return husband;
}
public void setHusband(HusbandBean husband) {
this.husband = husband;
}
@Override
public String toString() {
return "Wife [id=" + id + ", name=" + name + ", husband=" + husband
+ "]";
}
} 

3)接下来建立两个接口,HusbandMapper,WifeMapper.

HusbandMapper

package com.cy.mybatis.mapper;
import com.cy.mybatis.beans.HusbandBean;
public interface HusbandMapper {

public HusbandBean selectHusbandById (int id) throws Exception;

public HusbandBean selectHusbandAndWife(int id) throws Exception;
} 

4)定义HusbandMapper.xml文件












select * from t_husband where id=#{id}

 

在WifeMapper.xml里有个方法





select * from t_key where fk_lock_id = #{id}

 


LockMapper.xml
















insert into t_lock values (null,#{lock.lock}) 


select * from t_lock where id= #{id}

 

2.5 ) 实现

package com.cy.mybatis.service;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.cy.mybatis.beans.KeyBean;
import com.cy.mybatis.beans.LockBean;
import com.cy.mybatis.mapper.KeyMapper;
import com.cy.mybatis.mapper.LockMapper;
import com.cy.mybatis.tools.DBTools;
public class oneToManyService {
public static void main(String[] args) {
// saveLock();
// batchSaveKeys();
findLockAndKeys();
}
private static void findLockAndKeys() {
SqlSession session = DBTools.getSession();
LockMapper lm = session.getMapper(LockMapper.class);
LockBean lock = lm.findLockAndKeys();
System.out.println(lock);
}
private static void batchSaveKeys() {
SqlSession session = DBTools.getSession();
LockMapper lm = session.getMapper(LockMapper.class);
KeyMapper km = session.getMapper(KeyMapper.class);
LockBean lock = lm.findLockById();
List keys = new ArrayList();
for(int i = ; i < ; i++){
KeyBean key = new KeyBean(null, "钥匙"+i, lock);
keys.add(key);
}
km.batchSaveKeys(keys);
session.commit();
}
private static void saveLock() {
SqlSession session = DBTools.getSession();
LockMapper lm = session.getMapper(LockMapper.class);
LockBean lock = new LockBean(null, "锁", null);
lm.saveLock(lock);
session.commit();
}
} 

结果显示:

三 、批量操作与分页

这里就使用前一章的User.就写出主要的代码。

首先定义分页对象。

package com.cy.mybatis.beans;
import java.util.List;

public class Pager {
private int pageNo;// 当前页码
private int pageTotal;// 总页码
private int rowsTotal;// 总条数
private int pageSize;// 每页显示条数
private List list;// 返回的数据集合
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageTotal() {
return pageTotal;
}
public void setPageTotal(int pageTotal) {
this.pageTotal = pageTotal;
}
public int getRowsTotal() {
return rowsTotal;
}
public void setRowsTotal(int rowsTotal) {
this.rowsTotal = rowsTotal;
pageTotal = rowsTotal % pageSize == ? rowsTotal / pageSize : rowsTotal / pageSize + ;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
@Override
public String toString() {
return "Pager [pageNo=" + pageNo + ", pageTotal=" + pageTotal
+ ", rowsTotal=" + rowsTotal + ", pageSize=" + pageSize
+ ", list=" + list + "]";
}
} 


UserMapper.java接口。

package com.cy.mybatis.mapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.cy.mybatis.beans.UserBean;
public interface UserMapper {

public int insertUser(@Param("user")UserBean user) throws Exception;

public int updateUser (@Param("u")UserBean user,@Param("id")int id) throws Exception;

public int deleteUser(int id) throws Exception;

public UserBean selectUserById(int id) throws Exception;

public List selectAllUser() throws Exception;

public int batchInsertUser(@Param("users")List user) throws Exception;

public int batchDeleteUser(@Param("list")List list) throws Exception;

public List pagerUser(Map parmas) throws Exception;

public int countUser(Map parmas) throws Exception;
} 

xml文件











 
 



insert into t_user (username,password,account) values (#{user.username},#{user.password},#{user.account})


update t_user set username=#{u.username},password=#{u.password},account=#{u.account} where id=#{id}


delete from t_user where id=#{id} 


select * from t_user



insert into t_user values 

(null,#{users.username},#{users.password},#{users.account})



delete from t_user where id in (

#{id}

)





select count(*) from t_user where = 

and username like '%${username}%' 


 

#在生成SQL时,对于字符类型参数,会拼装引号
$在生成SQL时,不会拼装引号,可用于order by之类的参数拼装

测试类

package com.cy.mybatis.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import com.cy.mybatis.beans.UserBean;
import com.cy.mybatis.tools.DBTools;
import com.cy.mybatis.mapper.UserMapper;
public class UserService {

public static void main(String[] args) {
// insertUser();
// deleteUser();
// updateUser();
// selectUserById();
// selectAllUser();
// batchInsertUser();
// batchDeleteUser();
// countUser();
pagerUser();
}
private static void countUser() {
SqlSession session = DBTools.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
Map params = new HashMap();
params.put("username", "kitty");
int index = ;
params.put("index", index);//从第几页开始。mysql是从开始的
params.put("pageSize", );//每页显示的数据条数
int count;
try {
count = mapper.countUser(params);
System.out.println(count);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void pagerUser() {
SqlSession session = DBTools.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
Map params = new HashMap();
params.put("username", "kitty");
params.put("index", );//从第几页开始。mysql是从开始的
params.put("pageSize", );//每页显示的数据条数
try {
List u = mapper.pagerUser(params);
for (UserBean userBean : u) {
System.out.println("--------"+userBean);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static void batchDeleteUser() {
SqlSession session = DBTools.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List ids = new ArrayList();
for(int i = ; i < ; i ++){
ids.add(i);
}
try {
mapper.batchDeleteUser(ids);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void batchInsertUser() {
SqlSession session = DBTools.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List users = new ArrayList();
for(int i = ; i < ; i ++){
UserBean user = new UserBean("kitty"+i, "", .);
users.add(user);
}
try {
mapper.batchInsertUser(users);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}
}

private static void insertUser() {
SqlSession session = DBTools.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
UserBean user = new UserBean("懿", "", .);
try {
mapper.insertUser(user);
System.out.println(user.toString());
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}

private static void deleteUser(){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
try {
mapper.deleteUser();
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}

private static void updateUser(){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
UserBean user =new UserBean("小明", "",.);
try {
mapper.updateUser(user, );
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}

private static void selectUserById(){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
try {
UserBean user= mapper.selectUserById();
System.out.println(user.toString());
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
}

private static void selectAllUser(){
SqlSession session=DBTools.getSession();
UserMapper mapper=session.getMapper(UserMapper.class);
try {
List user=mapper.selectAllUser();
System.out.println(user.toString());
session.commit();
} catch (Exception e) {
e.printStackTrace();
session.rollback();
}
} 
} 

看一下项目的整体:

每件事都需要坚持!

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号