mybatis快速使用

来源:互联网 发布:电力猫网络连不上网 编辑:程序博客网 时间:2024/06/06 09:01

1.项目结构:


2.代码:

1.User.java,Article.java:两个用到的javabean
package com.mybatis.bean;public class User {private int id;private String userName;private String userAge;private String userAddress;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserAge() {return userAge;}public void setUserAge(String userAge) {this.userAge = userAge;}public String getUserAddress() {return userAddress;}public void setUserAddress(String userAddress) {this.userAddress = userAddress;}}
package com.mybatis.bean;public class Article {private int id;private User user;private String title;private String content;public int getId() {return id;}public void setId(int id) {this.id = id;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}

2.mybatis通过接口去执行CRUD,没有实现类,对应XML配置文件,实现接口方法:IUserOperation.java
package com.mybatis.service;import java.util.List;import com.mybatis.bean.Article;import com.mybatis.bean.User;public interface IUserOperation {public User selectUserById(int id);public List selectUsers(String userName);public void addUser(User user);public void updateUser(User user);public void deleteUser(int id);public List<Article> getUserArticles(int userid);}

3.对应配置文件User.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="com.mybatis.bean.UserMapper com.mybatis.service.IUserOperation"  --><!-- mapepr参数,namespace 对应接口   以下用到的 User 在Configuration.xml配置文件进行了匹配处理类--><mapper namespace="com.mybatis.service.IUserOperation" >  <!-- id 对应接口 方法名  parameterType传入参数类型   resultType返回值类型--><select id="selectUserById" parameterType="int" resultType="User">select * from user where id = #{id}</select><!-- 定义返回值集合对象  通过id引用 --><resultMap type="User" id="resultListUser"><id column="id" property="id"/><result column="userName" property="userName"/><result column="userAge" property="userAge"/><result column="userAddress" property=""/></resultMap><!--查询集合  传入string 返回map,上面声明的map--><select id="selectUsers" parameterType="string" resultMap="resultListUser">select * from user where userName like #{userName}</select><!-- useGeneratedKeys="true" keyProperty="id"绑定key列,自动创建 --><insert  id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">insert into user(userName,userAge,userAddress)values(#{userName},#{userAge},#{userAddress})</insert><update id="updateUser" parameterType="User">update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}</update><delete id="deleteUser" parameterType="int">delete from user where id=#{id}</delete><!-- 多对一查询  注意 id和aid --><resultMap type="Article" id="resultUserArticleList"><id property="id" column="aid"/><result property="title" column="title"/><result property="content" column="content"/><!-- association处理多对一的关系 多本书 一个作者 --><association property="user" javaType="User"><id property="id" column="id"/><result column="userName" property="userName"/><result column="userAge" property="userAge"/><result column="userAddress" property="userAddress"/></association></resultMap>  <select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList">select user.id,user.userAge,user.userName,user.userAddress,article.id aid,article.title,article.content from user,article                 where user.id=article.userid and user.id=#{id}</select></mapper>

4.Mybatis配置文件: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><!-- 匹配别名和处理类  --><typeAliases><!--alias可选,默认为类名,type必须 --><typeAlias  alias="User"  type="com.mybatis.bean.User"/><typeAlias type="com.mybatis.bean.Article"/></typeAliases><!-- 配置数据库连接 --><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!--导入mapper User.xml  --><mappers><mapper resource="com/mybatis/bean/User.xml"/></mappers></configuration>

5.测试:UserTest.java:
package com.junit.test;import static org.junit.Assert.*;import java.io.IOException;import java.io.Reader;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 org.apache.naming.resources.Resource;import org.junit.Before;import org.junit.Test;import com.mybatis.bean.Article;import com.mybatis.bean.User;import com.mybatis.service.IUserOperation;public class UserTest {private static SqlSessionFactory sqlSessionFactory ;private static Reader reader;static{try {reader = Resources.getResourceAsReader("Configuration.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static SqlSessionFactory getSession(){return sqlSessionFactory;}。。。。。。。。。。}
加载配置文件,获取sqlsessionfactory对象

@Testpublic void test() {SqlSession session = sqlSessionFactory.openSession();/*User user = session.selectOne("com.mybatis.bean.UserMapper.selectUserById", 1);*/IUserOperation userOperation=session.getMapper(IUserOperation.class);User user = userOperation.selectUserById(1);System.out.println(user.getUserAddress());System.out.println(user.getUserName());session.close();}
通过session的getMapper(xxx.class)获取接口对象xxx,通过接口方法直接操作。
还有一种方式改User.xml的
namespace="com.mybatis.bean.UserMapper
再在test()中:直接获取 传入 包名.namespace.id + id
User user = session.selectOne("com.mybatis.bean.UserMapper.selectUserById", 1);
获取集合:
@Testpublic void getUserList(){        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation=session.getMapper(IUserOperation.class);                       List<User> users = userOperation.selectUsers("%");            for(User user:users){                System.out.println(user.getId()+":"+user.getUserName()+":"+user.getUserAddress());            }        } finally {            session.close();        }    }
添加:要commit
@Testpublic void addUser(){User user = new User();user.setUserAddress("东京不热");user.setUserName("藏进一空");user.setUserAge("18");SqlSession session= sqlSessionFactory.openSession();IUserOperation userOperation = session.getMapper(IUserOperation.class);userOperation.addUser(user);session.commit();System.out.println("当前增加的用户为:"+user.getId()+" "+user.getUserAddress());session.close();}
更新:先获取对象再修改保存,commit
@Testpublic void update(){SqlSession session = sqlSessionFactory.openSession();IUserOperation userOperation = session.getMapper(IUserOperation.class);User user = userOperation.selectUserById(2);user.setUserName("巨像");user.setUserAge("19");user.setUserAddress("aaaaa");userOperation.updateUser(user);session.commit();session.close();}
删除:传id:
@Testpublic void deleteUser(){SqlSession session = sqlSessionFactory.openSession();IUserOperation userOperation = session.getMapper(IUserOperation.class);userOperation.deleteUser(12);session.commit();session.close();}

获取多对一集合:传入user.id
@Testpublic void getUserArticles(){        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation=session.getMapper(IUserOperation.class);                       List<Article> articles = userOperation.getUserArticles(1);            for(Article article:articles){                System.out.println(article.getTitle()+":"+article.getContent()+                        ":作者是:"+article.getUser().getUserName()+":地址:"+                         article.getUser().getUserAddress());            }        } finally {            session.close();        }    }}



3.总结:

1.创建mybatis配置文件:数据库连接、别名类匹配、以及导入之后创建的mapper XML

2.创建对象javabean,并根据需求配置javabean的mapper操作XML文件

3.创建操作接口,对应mapper内的 id、传入值名称和类型

4.通过加载配置文件获取sqlsessionfactory对象,在获取session,通过session.getMapper(xxx.class) 获取操作接口类对象xxx,通过接口方法直接执行CRUD.

0 0
原创粉丝点击