本文主要介绍了如何使用mybatis进行简单的数据库操作。本人使用的是mybatis3.05。
1.创建数据库表(User表)
CREATE TABLE `NewTable` (`userId` bigint(20) NOT NULL AUTO_INCREMENT ,`userName` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,`password` varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,`comment` varchar(250) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,PRIMARY KEY (`userId`),UNIQUE INDEX `UQ_User_userName` (`userName`) USING BTREE)
package com.mybatis.config;public class User { private int userId; private String userName; private String password; private String comment; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; }}
package com.mybatis.config;import java.util.List;public interface UserDao { public int insert(User user); public int update(User user); public int delete(String userName); public List<User> selectAll(); public int countAll(); public User findByUserName(String userName);}
<?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.mybatis.config.UserDao"> <select id="countAll" resultType="int"> select count(*) c from user; </select> <select id="selectAll" resultType="com.mybatis.config.User"> select * from user order by userName asc </select> <insert id="insert" parameterType="com.mybatis.config.User"> insert into user(userName,password,comment) values(#{userName},#{password},#{comment}) </insert> <update id="update" parameterType="com.mybatis.config.User"> update user set userName=#{userName},password=#{password},comment=#{comment} where userName=#{userName} </update> <delete id="delete" parameterType="int"> delete from user where userName=#{userName} </delete> <select id="findByUserName" parameterType="String" resultType="com.mybatis.config.User"> select * from user where userName=#{userName} </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> <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/hlp?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" /> <property name="username" value="root" /> <property name="password" value="1234" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/mybatis/config/UserDaoMapper.xml"/> </mappers></configuration>
package com.mybatis.config;import java.io.Reader;import java.util.Iterator;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;public class UserDaoTest { @Test public void userDaoTest() throws Exception { String resource = "MyBatis-Configuration.xml"; Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(reader); SqlSession session = factory.openSession(); UserDao userDao = session.getMapper(UserDao.class); User user = new User(); user.setUserName("hongye"); user.setPassword("123456"); user.setComment("备注"); userDao.insert(user); System.out.println("记录条数:"+userDao.countAll()); List<User> users = userDao.selectAll(); Iterator<User> iter = users.iterator(); while(iter.hasNext()){ User u = iter.next(); System.out.println("用户名:"+u.getUserName()+"密码:"+u.getPassword()); } user.setComment("comment"); userDao.update(user); User u = userDao.findByUserName("hongye"); System.out.println(u.getComment()); userDao.delete("hongye"); System.out.println("记录条数:"+userDao.countAll()); session.commit(); session.close(); }}