configuration.xml , MyBatis主配置文件
- <?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>
- <!-- 属性配置 -->
- <properties resource="jdbc.properties"/>
- <!-- 设置缓存和延迟加载等等重要的运行时的行为方式 -->
- <settings>
- <!-- 设置超时时间,它决定驱动等待一个数据库响应的时间 -->
- <setting name="defaultStatementTimeout" value="25000"/>
- </settings>
- <!-- 别名 -->
- <typeAliases>
- <typeAlias alias="User" type="com.mybatis.model.User"/>
- </typeAliases>
- <environments default="development">
- <!-- environment 元素体中包含对事务管理和连接池的环境配置 -->
- <environment id="development">
- <transactionManager type="JDBC" />
- <dataSource type="POOLED">
- <property name="driver" value="${driver}" />
- <property name="url" value="${url}" />
- <property name="username" value="${username}" />
- <property name="password" value="${password}" />
- </dataSource>
- </environment>
- </environments>
- <!-- ORM映射文件 -->
- <mappers>
- <mapper resource="com/mybatis/model/UserSqlMap.xml" />
- </mappers>
- </configuration>
jdbc.properties
- driver=com.mysql.jdbc.Driver
- url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
- username=root
- password=123456
log4j.properties
- log4j.rootLogger=debug, stdout, R
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=firestorm.log
- log4j.appender.R.MaxFileSize=100KB
- log4j.appender.R.MaxBackupIndex=1
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
- log4j.logger.com.codefutures=DEBUG
User .java
- package com.mybatis.model;
- import java.io.Serializable;
- @SuppressWarnings("serial")
- public class User implements Serializable {
- private int id;
- private String userName;
- private String password;
- public User(){
- }
- 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 getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
UserSqlMap.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper
- PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
- "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
- <!-- namespace用于java代码调用时识别指定xml的mapper文件 -->
- <mapper namespace="com.mybatis.model.User">
- <!-- 配置ORM映射 -->
- <resultMap type="User" id="user_orm">
- <id property="id" column="id"/>
- <result property="userName" column="userName"/>
- <result property="password" column="password"/>
- </resultMap>
- <!-- 用来定义可重用的SQL代码段 -->
- <sql id="demo_sql">
- userName,password
- </sql>
- <insert id="inser_user" parameterType="User">
- <!-- include 引用可重用的SQL代码段 -->
- INSERT INTO USER(<include refid="demo_sql"/>) VALUES(#{userName},#{password})
- </insert>
- <update id="update_user" parameterType="User">
- UPDATE USER SET userName=#{userName} ,password=#{password} WHERE id=#{id}
- </update>
- <update id="delete_user" parameterType="int">
- DELETE FROM USER WHERE id=#{id}
- </update>
- <select id="selectAll_user" useCache="false" flushCache="true" resultMap="user_orm">
- SELECT * FROM USER
- </select>
- <!-- 使用map传人多个参数 -->
- <select id="selectList_user" useCache="false" flushCache="true" parameterType="map" resultMap="user_orm">
- SELECT * FROM USER LIMIT #{pageNow},#{pageSize}
- </select>
- <select id="selectById_user" parameterType="int" resultType="User">
- SELECT * FROM USER WHERE id= #{id}
- </select>
- <select id="selectCount_user" resultType="int">
- SELECT count(*) FROM USER
- </select>
- <select id="selectByName_user" parameterType="String" resultType="User">
- SELECT * FROM USER WHERE userName= #{userName}
- </select>
- <!--模糊 MyIbatis 3.2.0-->
- <select id="selectUserByName" parameterType="String" resultMap="user_orm">
- SELECT * FROM USER WHERE userName like "%"#{userName}"%"
- </select>
- </mapper>
SessionFactoryUtil.java MyBatis工具类,用于创建SqlSessionFactory
- package com.mybatis.sessionfactory;
- import java.io.IOException;
- 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;
- public class SessionFactoryUtil {
- private static final String RESOURCE = "Configuration.xml";
- private static SqlSessionFactory sqlSessionFactory = null;
- private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
- static {
- Reader reader = null;
- try {
- reader = Resources.getResourceAsReader(RESOURCE);
- } catch (IOException e) {
- throw new RuntimeException("Get resource error:"+RESOURCE, e);
- }
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
- }
- /**
- * Function : 获得SqlSessionFactory
- */
- public static SqlSessionFactory getSqlSessionFactory(){
- return sqlSessionFactory;
- }
- /**
- * Function : 重新创建SqlSessionFactory
- */
- public static void rebuildSqlSessionFactory(){
- Reader reader = null;
- try {
- reader = Resources.getResourceAsReader(RESOURCE);
- } catch (IOException e) {
- throw new RuntimeException("Get resource error:"+RESOURCE, e);
- }
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
- }
- /**
- * Function : 获取sqlSession
- */
- public static SqlSession getSession(){
- SqlSession session = threadLocal.get();
- if(session!=null){
- if(sqlSessionFactory == null){
- getSqlSessionFactory();
- }
- //如果sqlSessionFactory不为空则获取sqlSession,否则返回null
- session = (sqlSessionFactory!=null) ? sqlSessionFactory.openSession(): null;
- }
- return session;
- }
- /**
- * Function : 关闭sqlSession
- */
- public static void closeSession(){
- SqlSession session = threadLocal.get();
- threadLocal.set(null);
- if(session!=null){
- session.close();
- }
- }
- }
UserDao interface
- package com.mybatis.dao;
- import java.util.List;
- import com.mybatis.model.User;
- public interface UserDao {
- public User load(int id);
- public void add(User user);
- public void update(User user);
- public void delete(int id);
- public User findByName(String userName);
- public List<User> queryAllUser();
- public List<User> list(int pageNow,int pageSize);
- public int getAllCount();
- }
UserDaoImpl
- package com.mybatis.dao.implment;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.apache.ibatis.session.SqlSession;
- import com.mybatis.dao.UserDao;
- import com.mybatis.model.User;
- import com.mybatis.sessionfactory.SessionFactoryUtil;
- public class UserDaoImpl implements UserDao {
- public User load(int id){
- SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
- User user = (User) session.selectOne("com.mybatis.model.User.selectById_user", id);
- session.close();
- return user;
- }
- public void add(User user) {
- SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
- session.insert("com.mybatis.model.User.inser_user", user);
- session.commit();
- session.close();
- }
- public void update(User user){
- SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
- session.update("com.mybatis.model.User.update_user", user);
- session.commit();
- session.close();
- }
- public void delete(int id){
- SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
- session.delete("com.mybatis.model.User.delete_user", id);
- session.close();
- }
- public User findByName(String userName){
- SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
- User user = (User)session.selectOne("com.mybatis.model.User.selectByName_user", userName);
- session.close();
- return user;
- }
- @SuppressWarnings("unchecked")
- public List<User> queryAllUser() {
- SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
- List<User> list = session.selectList("com.mybatis.model.User.selectAll_user");
- session.close();
- return list;
- }
- @SuppressWarnings("unchecked")
- public List<User> list(int pageNow , int pageSize){
- SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();
- Map<String,Object> params = new HashMap<String ,Object>();
- params.put("pageNow", pageNow);
- params.put("pageSize", pageSize);
- List<User> list = session.selectList("com.mybatis.model.User.selectList_user", params);
- session.close();
- return list;
- }
- public int getAllCount(){
- SqlSession session =SessionFactoryUtil.getSqlSessionFactory().openSession();
- int count = (Integer) session.selectOne("com.mybatis.model.User.selectCount_user");
- session.close();
- return count;
- }
- }
测试类:
- package com.mybatis.dao.implment;
- import java.util.List;
- import org.junit.Test;
- import com.mybatis.dao.UserDao;
- import com.mybatis.model.User;
- public class UserDaoTest {
- private UserDao userDao = new UserDaoImpl();
- @Test
- public void testLoad(){
- User u = userDao.load(1);
- if(u!=null){
- System.out.println("UserId:"+u.getId()+" UserName:"+u.getUserName()+" Password:"+u.getPassword());
- }
- else{
- System.out.println("id不存在!!");
- }
- }
- @Test
- public void testAdd(){
- User user = new User();
- user.setUserName("admin5");
- user.setPassword("123456");
- userDao.add(user);
- }
- @Test
- public void testUpdate(){
- User user = new User();
- user.setId(2);
- user.setUserName("manager");
- user.setPassword("123456");
- userDao.update(user);
- }
- @Test
- public void testQueryAllUser(){
- List<User> list = userDao.queryAllUser();
- if(list!=null&list.size()>0){
- for(User u:list){
- System.out.println("UserId:"+u.getId()+" UserName:"+u.getUserName()+" Password:"+u.getPassword());
- }
- }
- }
- @Test
- public void testFindByName(){
- User u = userDao.findByName("admin");
- if(u!=null){
- System.out.println("UserId:"+u.getId()+" UserName:"+u.getUserName()+" Password:"+u.getPassword());
- }
- else{
- System.out.println("用户名不存在!!");
- }
- }
- @Test
- public void testList(){
- List<User> list = userDao.list(1, 4);
- if(list!=null&list.size()>0){
- for(User u:list){
- System.out.println("UserId:"+u.getId()+" UserName:"+u.getUserName()+" Password:"+u.getPassword());
- }
- }
- }
- @Test
- public void testGetAllCount(){
- System.out.println("All Count : "+userDao.getAllCount());
- }
- @Test
- public void testDelete(){
- userDao.delete(3);
- }
- }