config.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> <!-- 次属性可以指定类的全路径,同时给他一个别名 相当于(id="'class="")
<typeAliases >
<typeAlias type="com.mybatis.entry.userMapper" alias="umapper"/>
</typeAliases>
--> <!-- 默认创建此工厂 默认模式 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments> <mappers>
<!-- 注册userMapper.xml文件,
userMapper.xml位于me.gacl.mapping这个包下,
所以resource写成me/gacl/mapping/userMapper.xml
-->
<mapper resource="com/mybatis/dao/userMapper.xml"/>
</mappers>
</configuration>

UserMapper.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"> <!-- namespace命名空间,作用就是对sql进行分类化的管理,理解为sql隔离
注意:使用mapper代理开发时,namespace有特殊作用
--> <!-- <mapper namespace = "umapper"> -->
<mapper namespace = "com.mybatis.dao.UserMapper">
<!-- 通过SELECT执行数据库查询
id:标识映射文件中的sql,称为statement的id;
将sql语句封装在mapperStatement的对象中,所以Id称为Statement的id;
parameterType:指定输入参数的类型,这里指定int型
#{}:表示一个占位符;
#{id}:其中Id表示接收输入的参数,参数名称就是Id,如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或者其它名称;
resultType:指定sql输出结果所映射的java对象类型,select指定resultType表示将单条记录映射成java对象。
--> <select id = "selectById" parameterType="int" resultType="com.mybatis.entry.User">
select * from user where id=#{id}
</select>
<!-- 根据用户名称模糊查询用户信息,可能返回多条数据
resultType:指定的就是单条记录所映射的java类型;
${}:表示拼接sql字符串,将接收到的参数内容不加任何修饰拼接在sql中.
使用${}拼接sql,可能会引起sql注入
${value}:接收输入参数的内容,如果传入的是简单类型,${}中只能使用value
--> <select id="selectUserAndYear" resultType="com.mybatis.entry.UserMore">
select `user`.*,phone.*
from user,phone
where phone.phonenum = `user`.phoneNum and name=#{name};
</select> <!-- 数据库字段与类属性名不一致时 -->
<select id="selectUserAndYearMap" resultMap="UserMap" >
select `user`.*,phone.*
from user,phone
where phone.phonenum = `user`.phoneNum and name=#{name};
</select>
<!-- 一对一的resultMap关联方式 -->
<resultMap type="com.mybatis.entry.User" id="UserMap">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="phoneNum" property="phoneNum"/> <association property="phone" javaType="com.mybatis.entry.Phone">
<id column="id" property="id"/>
<result column="phoneNum" property="phoneNum"/>
<result column="year" property="year"/>
</association>
</resultMap> <select id="selectUserAndQQMap" resultMap="QQMap">
select `user`.*,qq.*
from user,qq
where `user`.id = qq.userId and user.name=#{name};
</select>
<!-- 一对多的resultMap关联方式 -->
<resultMap type="com.mybatis.entry.User" id="QQMap">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="phoneNum" property="phoneNum"/> <collection property="qqs" ofType="com.mybatis.entry.QQ">
<id column="qq_id" property="id"/>
<result column="qqName" property="qqName"/>
<result column="password" property="password"/>
<result column="userId" property="userId"/>
</collection>
</resultMap>
</mapper>

UserMapper.java

 package com.mybatis.dao;

 import java.util.List;

 import com.mybatis.entry.User;
import com.mybatis.entry.UserMore; public interface UserMapper { public User selectById(int id)throws Exception; public UserMore selectUserAndYear(String name)throws Exception; public List<User> selectUserAndYearMap(String name)throws Exception; public List<User> selectUserAndQQMap(String name)throws Exception; }

UserService.java

 package com.mybatis.service;

 import java.io.IOException;
import java.io.InputStream;
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 com.mybatis.dao.UserMapper;
import com.mybatis.entry.User;
import com.mybatis.entry.UserMore; public class UserService { SqlSessionFactory factory; public void before() throws IOException{
InputStream in = Resources.getResourceAsStream("conf.xml");
factory = new SqlSessionFactoryBuilder().build(in);
} public User selectById(int id) throws Exception{
//先获取一个session工厂
before();
//生产出一个session
SqlSession session = factory.openSession();
//获取user session对象(代理人)
UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectById(id);
return user;
} public UserMore selectUserAndYear(String name) throws Exception{
before();
SqlSession session = factory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
UserMore more = mapper.selectUserAndYear(name);
return more;
} public List<User> selectUserAndYearMap(String name) throws Exception{
before();
SqlSession session = factory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> list = mapper.selectUserAndYearMap(name);
return list;
} public List<User> selectUserAndQQMap(String name) throws Exception{
before();
SqlSession session = factory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> list = mapper.selectUserAndQQMap(name);
return list;
}
}

User.java

 package com.mybatis.entry;

 import java.util.List;

 public class User {

     private Integer id;
private String name;
private String phoneNum;
private Phone phone;
private List<QQ> qqs; public User() {
super();
} public User(String name, String phoneNum) {
this.name = name;
this.phoneNum = phoneNum;
} public User(Integer id, String name, String phoneNum) {
super();
this.id = id;
this.name = name;
this.phoneNum = phoneNum;
} public List<QQ> getQqs() {
return qqs;
} public void setQqs(List<QQ> qqs) {
this.qqs = qqs;
} public Phone getPhone() {
return phone;
} public void setPhone(Phone phone) {
this.phone = phone;
} 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 getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", phoneNum=" + phoneNum + ", phone=" + phone + ", qqs=" + qqs
+ "]";
} }

QQ.java

 package com.mybatis.entry;

 public class QQ {
private Integer id;
private String qqName;
private String password;
private Integer userId; public QQ() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getQqName() {
return qqName;
}
public void setQqName(String qqName) {
this.qqName = qqName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
@Override
public String toString() {
return "QQ [id=" + id + ", qqName=" + qqName + ", password=" + password + ", userId=" + userId + "]";
} }

Phone.java

 package com.mybatis.entry;

 public class Phone {

     private Integer id;
private String phoneNum;
private Integer year; public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
} @Override
public String toString() {
return "Phone [id=" + id + ", phoneNum=" + phoneNum + ", year=" + year + "]";
} }

UserMore.java

 package com.mybatis.entry;

 public class UserMore extends User{

     private Integer year;

     public UserMore() {
super();
} public Integer getYear() {
return year;
} public void setYear(Integer year) {
this.year = year;
} @Override
public String toString() {
return "UserMore [year=" + year + "]";
} }

Test.java

 package com.mybatis.test;

 import java.util.List;

 import com.mybatis.entry.QQ;
import com.mybatis.entry.User;
import com.mybatis.entry.UserMore;
import com.mybatis.service.UserService; public class Test { @org.junit.Test
public void testSelectById() throws Exception{
UserService service = new UserService();
User user= service.selectById(1);
System.out.println(user);
} @org.junit.Test
public void testUserAndYear() throws Exception{
UserService service = new UserService();
UserMore more= service.selectUserAndYear("刘杨");
System.out.println("id:"+more.getId()+" name:"+more.getName()+
" phoneNum:"+more.getPhoneNum()+" year:"+more.getYear());
} @org.junit.Test
public void testUserAndYearMap() throws Exception{
UserService service = new UserService();
List<User> list = service.selectUserAndYearMap("刘杨");
for(User u:list){
System.out.println(u.getId()+" "+u.getName()+" "+u.getPhoneNum()+" "+u.getPhone().getYear());
System.out.println(u);
}
} @org.junit.Test
public void testUserAndQQMap() throws Exception{
UserService service = new UserService();
List<User> list = service.selectUserAndQQMap("刘杨");
for(User u:list){
System.out.print(u.getName()+ "=: ");
System.out.println(u);
for(QQ qq:u.getQqs()){
System.out.println(qq);
}
}
} }

最新文章

  1. sqlserver Between And的问题
  2. python signal(信号)
  3. google chrome set
  4. 如何加入自定义WebControl
  5. hdu 3595 GG and MM 博弈论
  6. delphi 保存网页
  7. js 中var that=this
  8. ubuntu中安装jdk 分类: java 学习笔记 linux ubuntu 2015-07-06 17:49 74人阅读 评论(0) 收藏
  9. soundtouch源码分析__based on csdn :
  10. .net中的特性
  11. Ajaxterm
  12. matcaffe的blob维度顺序
  13. Visual Studio 20周年,我和VS不得不说的故事(内含福利)
  14. DDL中drop-alter table
  15. Luogu 3375 【模板】KMP字符串匹配(KMP算法)
  16. WPF 界面如何绑定Command
  17. kubernets code-generator
  18. Java的程序执行过程与编译原理
  19. kei下无法跳转到函数的定义处
  20. 如何构建ASP.NET MVC4&amp;JQuery&amp;AJax&amp;JSon示例

热门文章

  1. Linux日常之命令sort
  2. liunx weblogic服务启停脚本
  3. 绕过CDN找到真实IP
  4. [每日一讲] Python系列:字符串(下)
  5. UML中共有5种静态图
  6. 使用tensorflow训练word2vec
  7. 14.django返回展示一张图片
  8. linux-系统启动流程-7
  9. 实习模块vue+java小型全栈开发(三)
  10. luogu P1434 滑雪 x