找回密码
 免费注册

QQ登录

只需一步,快速开始

开始:首先要创建数据库,搭建表和字段以及测试数据。
第一:确保安装了开发编辑软件,如myeclipse 或者eclipse 和其他的开发编辑器。
第二:下载jar包,(链接数据库的jar,日志系统jar,mybatis的jar)
第三:需要创建一个resource文件夹来保存配置文件。(注意是source 文件夹,不然扫描不了配置文件)
第四:创建配置文件database.properties
  1. driver=com.mysql.jdbc.Driver
  2. #在和mysql传递数据的过程中,使用unicode编码格式,并且字符集设置为utf-8
  3. url=jdbc:mysql://127.0.0.1:3306/数据库名称?useUnicode=true&characterEncoding=utf-8
  4. user=root
  5. password=root
复制代码
第五:创建mybatis-config.xml
  1. <!-- 通过这个配置文件完成mybatis与数据库的连接 -->
  2. <configuration>

  3.         <!-- 引入 database.properties 文件-->
  4.         <properties resource="database.properties"/>
  5.        
  6.         <settings>
  7.                 <!-- 配置mybatis的log实现为LOG4J -->
  8.                 <setting name="logImpl" value="LOG4J" />
  9.                 <!--
  10.                         设置resultMap的自动映射级别为:
  11.                         NONE
  12.                         PARTIAL(默认)
  13.                         FULL
  14.                 -->
  15.                  <!-- <setting name="autoMappingBehavior" value="FULL" />  -->
  16.                 <!-- <setting name="autoMappingBehavior" value="NONE" />  -->
  17.         </settings>
  18.        
  19.         <!--类型别名-->
  20.         <typeAliases>
  21.                  <!-- <typeAlias alias="User" type="cn.smbms.pojo.User"/> -->
  22.                  <package name="cn.smbms.pojo"/>
  23.         </typeAliases>
  24.        
  25.         <environments default="development">
  26.                 <environment id="development">
  27.                         <!--配置事务管理,采用JDBC的事务管理  -->
  28.                         <transactionManager type="JDBC"></transactionManager>
  29.                         <!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
  30.                         <dataSource type="POOLED">
  31.                                 <property name="driver" value="${driver}"/>
  32.                                 <property name="url" value="${url}"/>
  33.                                 <property name="username" value="${user}"/>
  34.                                 <property name="password" value="${password}"/>
  35.                         </dataSource>
  36.                 </environment>
  37.         </environments>
  38.        
  39.         <!-- 将mapper文件加入到配置文件中 -->
  40.         <mappers>
  41.                 <mapper resource="cn/smbms/dao/user/UserMapper.xml"/>
  42.         </mappers>

  43. </configuration>
复制代码


第六:直接复制log4j.properties不用自己写,网上有。

第七:根据数据库字段编写实体类。
  1. public class Address {
  2.         private Integer id;                                //主键ID
  3.         private String postCode;         //邮编
  4.         private String contact;                //联系人
  5.         private String addressDesc;        //地址
  6.         private String tel;                        //联系电话
  7.         private Integer createdBy;                 //创建者
  8.         private Date creationDate;         //创建时间
  9.         private Integer modifyBy;                 //更新者
  10.         private Date modifyDate;        //更新时间
  11.         private Integer userId;                        //用户ID
  12.        
  13.         public Integer getUserId() {
  14.                 return userId;
  15.         }
  16.         public void setUserId(Integer userId) {
  17.                 this.userId = userId;
  18.         }
  19.         public Integer getId() {
  20.                 return id;
  21.         }
复制代码
第八:编写链接数据库的接口工具MyBatisUtil
  1. package cn.smbms.utils;

  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;

  8. public class MyBatisUtil {
  9.         private static SqlSessionFactory factory;
  10.        
  11.         static{//在静态代码块下,factory只会被创建一次
  12.                 System.out.println("static factory===============");
  13.                 try {
  14.                         InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
  15.                         factory = new SqlSessionFactoryBuilder().build(is);
  16.                 } catch (IOException e) {
  17.                         // TODO Auto-generated catch block
  18.                         e.printStackTrace();
  19.                 }
  20.         }
  21.        
  22.         public static SqlSession createSqlSession(){
  23.                 return factory.openSession(false);//true 为自动提交事务
  24.         }
  25.        
  26.         public static void closeSqlSession(SqlSession sqlSession){
  27.                 if(null != sqlSession)
  28.                         sqlSession.close();
  29.         }
  30. }
复制代码
第九:创建映射文件:UserMapper
  1. package cn.smbms.dao.user;

  2. import java.util.List;
  3. import java.util.Map;
  4. import org.apache.ibatis.annotations.Param;
  5. import cn.smbms.pojo.User;

  6. public interface UserMapper {
  7.         /**
  8.          * 查询用户表记录数
  9.          * @return
  10.          */
  11.         public int count();
  12.        
  13.         /**
  14.          * 查询用户列表
  15.          * @param userName
  16.          * @param roleId
  17.          * @return
  18.          */
  19.         public List<User> getUserList(@Param("userName")String userName,@Param("userRole")Integer roleId);
  20.        
  21.         /**
  22.          * 增加用户
  23.          * @param user
  24.          * @return
  25.          */
  26.         public int add(User user);
  27.         /**
  28.          * 修改用户信息
  29.          * @param user
  30.          * @return
  31.          */
  32.         public int modify(User user);
  33.        
  34.         /**
  35.          * 修改当前用户密码
  36.          * @param id
  37.          * @param pwd
  38.          * @return
  39.          */
  40.         public int updatePwd(@Param("id")Integer id, @Param("userPassword")String pwd);
  41.        
  42.         /**
  43.          * 根据userId删除用户信息
  44.          * @param delId
  45.          * @return
  46.          */
  47.         public int deleteUserById(@Param("id")Integer delId);
  48.        
  49. }
复制代码

第十:创建映射配置文件UserMapper.xml
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

  5. <mapper namespace="cn.smbms.dao.user.UserMapper">

  6.         <!-- 查询用户表记录数 -->
  7.         <select id="count" resultType="int">
  8.                 select count(1) as count from smbms_user
  9.         </select>
  10.         <!-- 当数据库中的字段信息与对象的属性不一致时需要通过resultMap来映射 -->
  11.         <resultMap type="User" id="userList">
  12.                 <result property="id" column="id"/>
  13.                 <result property="userCode" column="userCode"/>
  14.                 <result property="userName" column="userName"/>
  15.                 <result property="phone" column="phone"/>
  16.                 <result property="birthday" column="birthday"/>
  17.                 <result property="gender" column="gender"/>
  18.                 <result property="userRole" column="userRole"/>
  19.                 <result property="userRoleName" column="roleName"/>
  20.         </resultMap>
  21.        
  22.         <!-- 查询用户列表 -->
  23.         <select id="getUserList" resultMap="userList">
  24.                 select u.*,r.roleName from smbms_user u,smbms_role r
  25.                         where u.userName like CONCAT ('%',#{userName},'%')
  26.                                         and u.userRole = #{userRole} and u.userRole = r.id
  27.         </select>
  28.        
  29.         <!-- 增加用户 -->
  30.         <insert id="add" parameterType="User">
  31.                 insert into smbms_user (userCode,userName,userPassword,gender,birthday,phone,
  32.                                                                 address,userRole,createdBy,creationDate)
  33.                                 values (#{userCode},#{userName},#{userPassword},#{gender},#{birthday},#{phone},
  34.                                 #{address},#{userRole},#{createdBy},#{creationDate})
  35.         </insert>
  36.        
  37.         <!-- 修改用户信息 -->
  38.         <update id="modify" parameterType="User">
  39.                 update smbms_user set userCode=#{userCode},userName=#{userName},userPassword=#{userPassword},
  40.                                                 gender=#{gender},birthday=#{birthday},phone=#{phone},address=#{address},
  41.                                                 userRole=#{userRole},modifyBy=#{modifyBy},modifyDate=#{modifyDate}
  42.                                  where id = #{id}
  43.         </update>
  44.        
  45.         <!-- 修改当前用户密码 -->
  46.         <update id="updatePwd" parameterType="Integer">
  47.                 update smbms_user set userPassword=#{userPassword} where id=#{id}
  48.         </update>
  49.        
  50.         <!-- 根据userId删除用户信息 -->
  51.         <delete id="deleteUserById" parameterType="Integer">
  52.                 delete from smbms_user where id=#{id}
  53.         </delete>
  54.        
  55. </mapper>
复制代码
第十一:创建测试文件UserMapperTest
  1. package cn.smbms.dao.user;

  2. import static org.junit.Assert.*;
  3. import java.text.SimpleDateFormat;
  4. import java.util.ArrayList;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import org.apache.ibatis.session.SqlSession;
  10. import org.apache.log4j.Logger;
  11. import org.junit.Before;
  12. import org.junit.Test;
  13. import cn.smbms.pojo.Address;
  14. import cn.smbms.pojo.User;
  15. import cn.smbms.utils.MyBatisUtil;

  16. public class UserMapperTest {
  17.        
  18.         private Logger logger = Logger.getLogger(UserMapperTest.class);
  19.        
  20.         @Before
  21.         public void setUp() throws Exception {
  22.         }

  23.         @Test
  24.         public void testCount() {
  25.                 SqlSession sqlSession = null;
  26.                 int count = 0;
  27.                 try {
  28.                         sqlSession = MyBatisUtil.createSqlSession();
  29.                        
  30.                         //第一种方式:调用selectOne方法执行查询操作
  31.                         //count = sqlSession.selectOne("cn.smbms.dao.user.UserMapper.count");
  32.                        
  33.                         //第二种方式:调用getMapper(Mapper.class)执行dao接口方法来实现对数据库的查询操作
  34.                         count = sqlSession.getMapper(UserMapper.class).count();
  35.                        
  36.                 } catch (Exception e) {
  37.                         // TODO: handle exception
  38.                         e.printStackTrace();
  39.                 }finally{
  40.                         MyBatisUtil.closeSqlSession(sqlSession);
  41.                 }
  42.                
  43.                 logger.debug("UserDaoTest count---> " + count);
  44.         }
  45.        
  46.         @Test
  47.         public void testGetUserList(){
  48.                 SqlSession sqlSession = null;
  49.                 List<User> userList = new ArrayList<User>();
  50.                 try {
  51.                         sqlSession = MyBatisUtil.createSqlSession();
  52.                         String userName = "孙";
  53.                         //String userName = "";
  54.                         //Integer roleId = 3;
  55.                         Integer roleId = null;
  56.                         userList = sqlSession.getMapper(UserMapper.class).getUserList(userName,roleId);
  57.                 } catch (Exception e) {
  58.                         // TODO: handle exception
  59.                         e.printStackTrace();
  60.                 }finally{
  61.                         MyBatisUtil.closeSqlSession(sqlSession);
  62.                 }
  63.                 logger.debug("userlist.size ----> " + userList.size());
  64.                 for(User user: userList){
  65.                         logger.debug("testGetUserList=======> id: " + user.getId() +
  66.                                                 " and userCode: " + user.getUserCode() +
  67.                                                 " and userName: " + user.getUserName() +
  68.                                                 " and userRole: " + user.getUserRole() +
  69.                                                 " and userRoleName: " + user.getUserRoleName() +
  70.                                                 " and age: " + user.getAge() +
  71.                                                 " and phone: " + user.getPhone() +
  72.                                                 " and gender: " + user.getGender());
  73.                 }
  74.         }
  75.        
  76.        
  77.         @Test
  78.         public void testAdd(){
  79.                 logger.debug("testAdd !===================");
  80.                 SqlSession sqlSession = null;
  81.                 int count = 0;
  82.                 try {
  83.                         sqlSession = MyBatisUtil.createSqlSession();
  84.                         User user = new User();
  85.                         user.setUserCode("test001");
  86.                         user.setUserName("测试用户001");
  87.                         user.setUserPassword("1234567");
  88.                         Date birthday = new SimpleDateFormat("yyyy-MM-dd").parse("1984-12-12");
  89.                         user.setBirthday(birthday);
  90.                         user.setCreationDate(new Date());
  91.                         user.setAddress("地址测试");
  92.                         user.setGender(1);
  93.                         user.setPhone("13688783697");
  94.                         user.setUserRole(1);
  95.                         user.setCreatedBy(1);
  96.                         user.setCreationDate(new Date());
  97.                         count = sqlSession.getMapper(UserMapper.class).add(user);
  98.                         //模拟异常,进行回滚
  99.                         //int i = 2/0;
  100.                         sqlSession.commit();
  101.                 } catch (Exception e) {
  102.                         // TODO: handle exception
  103.                         e.printStackTrace();
  104.                         sqlSession.rollback();
  105.                         count = 0;
  106.                 }finally{
  107.                         MyBatisUtil.closeSqlSession(sqlSession);
  108.                 }
  109.                 logger.debug("testAdd count: " + count);
  110.         }
  111.        
  112.         @Test
  113.         public void testModify(){
  114.                 logger.debug("testModify !===================");
  115.                 SqlSession sqlSession = null;
  116.                 int count = 0;
  117.                 try {
  118.                         User user = new User();
  119.                         user.setId(25);
  120.                         user.setUserCode("testmodify");
  121.                         user.setUserName("测试用户修改");
  122.                         user.setUserPassword("0000000");
  123.                         Date birthday = new SimpleDateFormat("yyyy-MM-dd").parse("1980-10-10");
  124.                         user.setBirthday(birthday);
  125.                         user.setCreationDate(new Date());
  126.                         user.setAddress("地址测试修改");
  127.                         user.setGender(2);
  128.                         user.setPhone("13600002222");
  129.                         user.setUserRole(2);
  130.                         user.setModifyBy(1);
  131.                         user.setModifyDate(new Date());
  132.                         sqlSession = MyBatisUtil.createSqlSession();
  133.                         count = sqlSession.getMapper(UserMapper.class).modify(user);
  134.                         //模拟异常,进行回滚
  135.                         //int i = 2/0;
  136.                         sqlSession.commit();
  137.                 } catch (Exception e) {
  138.                         // TODO Auto-generated catch block
  139.                         e.printStackTrace();
  140.                         sqlSession.rollback();
  141.                         count = 0;
  142.                 }finally{
  143.                         MyBatisUtil.closeSqlSession(sqlSession);
  144.                 }
  145.                 logger.debug("testModify count: " + count);
  146.         }
  147.        
  148.         @Test
  149.         public void testUpdatePwd() {
  150.                 logger.debug("testUpdatePwd !===================");
  151.                 SqlSession sqlSession = null;
  152.                 String pwd = "8888888";
  153.                 Integer id = 1;
  154.                 int count = 0;
  155.                 try {
  156.                         sqlSession = MyBatisUtil.createSqlSession();
  157.                         count = sqlSession.getMapper(UserMapper.class).updatePwd(id, pwd);
  158.                         sqlSession.commit();
  159.                 } catch (Exception e) {
  160.                         // TODO Auto-generated catch block
  161.                         e.printStackTrace();
  162.                         sqlSession.rollback();
  163.                         count = 0;
  164.                 }finally{
  165.                         MyBatisUtil.closeSqlSession(sqlSession);
  166.                 }
  167.                 logger.debug("testUpdatePwd count: " + count);
  168.         }
  169.        
  170.         @Test
  171.         public void testDeleteUserById() {
  172.                 logger.debug("testDeleteUserById !===================");
  173.                 SqlSession sqlSession = null;
  174.                 Integer delId = 25;
  175.                 int count = 0;
  176.                 try {
  177.                         sqlSession = MyBatisUtil.createSqlSession();
  178.                         count = sqlSession.getMapper(UserMapper.class).deleteUserById(delId);
  179.                         sqlSession.commit();
  180.                 } catch (Exception e) {
  181.                         // TODO Auto-generated catch block
  182.                         e.printStackTrace();
  183.                         sqlSession.rollback();
  184.                         count = 0;
  185.                 }finally{
  186.                         MyBatisUtil.closeSqlSession(sqlSession);
  187.                 }
  188.                 logger.debug("testDeleteUserById count: " + count);
  189.         }
  190. }
复制代码
运行就可看到内容。

配置图

配置图
收藏

0 个回复

您需要登录后才可以回帖 登录 | 免费注册