1、准备jar包:
拷贝到web工程的lib目录
2、创建用户表,并插入一条测试数据
Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong');
3、在MyBatis 里面创建两个源码目录,分别为 src_user,test_src, 鼠标右键点击 JavaResource
4、设置mybatis 配置文件:Configuration.xml, 在src_user目录下建立此文件,内容如下:
<?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>
<typeAlias alias="User" type="com.mb.mybatis.model.User"/>
</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://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mb/mybatis/model/User.xml"/>
</mappers>
</configuration>
5、建立与数据库对应的 java class,以及映射文件
在src_user下建立package:com.mb.mybatis.model ,并在这个 package 下建立 User 类
package com.mb.mybatis.model; public class User { private int id; private String userName; private String userAge; private String userAddress; /** * 文章id */ private String aid; /** * 文章标题 */ private String title; /** * 文章内容 */ private String content; 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; } public String getAid() { return aid; } public void setAid(String aid) { this.aid = aid; } 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; } }
6、同时建立这个User 的映射文件 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"> <mapper namespace="com.mb.mybatis.inter.IUserMapper"> <resultMap type="User" id="resultListUser"> <id column="id" property="id" /> <result column="userName" property="userName" /> <result column="userAge" property="userAge" /> <result column="userAddress" property="userAddress" /> </resultMap> <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress}) </insert> <delete id="deleteUser" parameterType="int"> delete from user where id=#{id} </delete> <update id="updateUser" parameterType="int"> update user set userAddress = 'hefei' where id = #{id} </update> <select id="selectUserByID" parameterType="int" resultType="User"> select * from `user` where id = #{id} </select> <select id="selectUsers" parameterType="string" resultMap="resultListUser"> select * from user where userName like #{userName} </select> </mapper>
7、开始测试
在test_src 源码目录下建立com.mb.test这个package,并建立测试类Test:
package com.mb.test; import java.io.Reader; 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.mb.mybatis.model.User; public class Test { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; static{ try{ reader = Resources.getResourceAsReader("Configuration.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); }catch(Exception e){ e.printStackTrace(); } } public static SqlSessionFactory getSession(){ return sqlSessionFactory; } public static void main(String[] args) { SqlSession session = sqlSessionFactory.openSession(); try { User user = (User) session.selectOne("com.mb.mybatis.models.UserMapper.selectUserByID", 1); System.out.println(user.getUserAddress()); System.out.println(user.getUserName()); } finally { session.close(); } } }
二、接下来,将讲述基于接口的操作方式,增删改查。
目录结构:
1、接口IUserMapper:
package com.mb.mybatis.inter; import java.util.List; import com.mb.mybatis.model.Article; import com.mb.mybatis.model.User; public interface IUserMapper { /** * 增加 * @param user */ public void addUser(User user); /** * 删除 * @param id */ public void deleteUser(int id); /** * 修改 * @param id */ public void updateUser(int id); /** * 根据id查询用户 * @param id * @return */ public User selectUserByID(int id); /** * 查询用户 * @param userName * @return */ public List<User> selectUsers(String userName); /** * 查询文章列表 * @param userid */ public List<User> getUserArticles(int id); }
2、测试文件:
package com.mb; 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.junit.Test; import com.mb.mybatis.inter.IUserMapper; import com.mb.mybatis.model.Article; import com.mb.mybatis.model.User; /** * 测试类,增删改查方法测试 * @author mabiao * */ public class MybatisTest { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; static{ try{ reader = Resources.getResourceAsReader("Configuration.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); }catch(Exception e){ e.printStackTrace(); } } public static SqlSessionFactory getSession(){ return sqlSessionFactory; } /** * 测试增加,增加后,必须提交事务,否则不会写入到数据库. */ @Test public void addUser(){ User user=new User(); user.setUserAddress("合肥"); user.setUserName("迪科"); user.setUserAge("30"); SqlSession session = sqlSessionFactory.openSession(); try { IUserMapper iUserMapper=session.getMapper(IUserMapper.class); iUserMapper.addUser(user); session.commit(); System.out.println("当前增加的用户 id为:"+user.getId()); } finally { session.close(); } } /** * 删除数据,删除一定要 commit. * @param id */ @Test public void deleteUser(){ SqlSession session = sqlSessionFactory.openSession(); try { IUserMapper iUserMapper=session.getMapper(IUserMapper.class); iUserMapper.deleteUser(2); session.commit(); } finally { session.close(); } } /** * 修改 */ @Test public void updateUser(){ //先得到用户,然后修改,提交。 SqlSession session = sqlSessionFactory.openSession(); try { IUserMapper iUserMapper=session.getMapper(IUserMapper.class); iUserMapper.updateUser(3); session.commit(); } finally { session.close(); } } /** * 查询 */ @Test public void selectOne() { SqlSession session = sqlSessionFactory.openSession(); try { User user = (User) session.selectOne("com.mb.mybatis.inter.IUserMapper.selectUserByID", 1); System.out.println(user.getUserAddress()); System.out.println(user.getUserName()); } finally { session.close(); } } /** * 查询 */ @Test public void select() { SqlSession session = sqlSessionFactory.openSession(); try { IUserMapper iUserMapper=session.getMapper(IUserMapper.class); User user = iUserMapper.selectUserByID(1); System.out.println(user.getUserAddress()); System.out.println(user.getUserName()); } finally { session.close(); } } /** * 查询列表 * @param userName */ @Test public void getUserList(){ SqlSession session = sqlSessionFactory.openSession(); try { IUserMapper iUserMapper=session.getMapper(IUserMapper.class); List<User> users = iUserMapper.selectUsers("summer"); for(User user:users){ System.out.println(user.getId()+":"+user.getUserName()+":"+user.getUserAddress()); } } finally { session.close(); } } }