项目结构:

1、创建project,导入相关依赖(前提)。配置db.properties与mybaits-config

  1. #mysql驱动
  2. db.driver=com.mysql.jdbc.Driver
  3.  
  4. #mysql数据库连接信息
  5. #端口号后信息:数据库名字,是否设置数据库编码,字符编码,是否使用SSl
  6. #SSL协议提供的服务主要有:
  7. #1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
  8. #2)加密数据以防止数据中途被窃取;
  9. #3)维护数据的完整性,确保数据在传输过程中不被改变。
  10. db.url=jdbc:mysql://localhost:3306/mybatis_wjw?useUnicode=true&characterEncoding=UTF-8&useSSL=false
  11.  
  12. #数据库用户
  13. db.username=root
  14.  
  15. #数据库密码
  16. db.password=xxxx

  

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3.  
  4. <configuration>
  5. <!--加载db.properties -->
  6. <properties resource="db.properties"></properties>
  7.  
  8. <!--设置别名 -->
  9. <typeAliases>
  10. <!--单个别名设置 -->
  11. <!-- <typeAlias type="schema.User" alias="user"/> -->
  12. <package name="Dao"/>
  13. </typeAliases>
  14. <!-- mybatis环境变量配置信息 -->
  15. <environments default="development">
  16. <environment id="development">
  17. <!-- jdbc事务控制管理,这里由mybatis管理 -->
  18. <transactionManager type="JDBC"/>
  19. <!-- 数据源配置 -->
  20. <dataSource type="POOLED">
  21. <property name="driver" value="${db.driver}"/>
  22. <property name="url" value="${db.url}"/>
  23. <property name="username" value="${db.username}"/>
  24. <property name="password" value="${db.password}"/>
  25. </dataSource>
  26. </environment>
  27. </environments>
  28. <!--映射文件管理 -->
  29. <mappers>
  30. <!--通过mapper.xml文件配置 -->
  31. <mapper resource="dao/User.xml"/>
  32. <!--通过类名 必需是mapper代理开发 -->
  33. <!--<mapper class="dao.User"/> -->
  34. <!--批量配置,推荐使用 -->
  35. <!--<package name="dao"/>-->
  36. </mappers>
  37. </configuration>

  

2、创建单例模式SQLSessionFctory  和  SqlSession

  1. package pubfun;
  2.  
  3. import org.apache.ibatis.io.Resources;
  4. import org.apache.ibatis.session.SqlSession;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7.  
  8. import java.io.IOException;
  9.  
  10. public class GetSqlSession {
  11.  
  12. public static SqlSession getSqlSession(){
  13. return InitSqlSessionFactory.ssf.openSession();
  14. }
  15.  
  16. private static class InitSqlSessionFactory{
  17.  
  18. private volatile static SqlSessionFactory ssf = getSqlSessionFaactory();
  19.  
  20. private static SqlSessionFactory getSqlSessionFaactory(){
  21. try {
  22. if(ssf==null){
  23. ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml") );
  24. }
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. return ssf;
  29. }
  30.  
  31. }
  32.  
  33. public static void main(String args[]){
  34. for (int i = 0; i < 5; i++) {
  35. new Thread(()->{
  36. SqlSession ss = getSqlSession();
  37. System.out.println("ss:"+ss);
  38. }).start();
  39. }
  40.  
  41. }
  42.  
  43. }

  

3、实现Dao层

  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.  
  6. <mapper namespace="user">
  7.  
  8. <select id="getByIdSchema" parameterType="int" resultType="schema.User">
  9. select * from t_user where tid = #{value}
  10. </select>
  11.  
  12. <parameterMap id="UserParameter" type="java.util.Map">
  13. <parameter property="tid" javaType="java.lang.Integer"></parameter>
  14. <parameter property="uname" javaType="java.lang.String" ></parameter>
  15. <parameter property="birthday" javaType="java.util.Date"></parameter>
  16. <parameter property="sex" javaType="java.lang.Character"></parameter>
  17. <parameter property="address" javaType="java.lang.String" ></parameter>
  18. </parameterMap>
  19.  
  20. <resultMap id="UserResult" type="schema.User">
  21. <id column="id" property="tid"></id>
  22. <result column="name" property="uname"></result>
  23. <result column="birthday" property="birthday"></result>
  24. <result column="sex" property="sex"></result>
  25. <result column="address" property="address"></result>
  26. </resultMap>
  27.  
  28. <select id="getByConditionListSchema" parameterMap="UserParameter" resultType="schema.User">
  29. select * from t_user where 1=1 and uname like concat('%',#{uname},'%') and address = #{address}
  30. </select>
  31.  
  32. <!--<insert id="insertUser" parameterMap="schema.User" >-->
  33. <!--insert into t_user values(#{id},#{name},#{birthday},#{sex},#{address})-->
  34. <!--</insert>-->
  35.  
  36. <!--<delete id="deleteUser" parameterMap="schema.User" >-->
  37. <!--delete from t_user where id = #{id}-->
  38. <!--</delete>-->
  39.  
  40. <!--<update id="updateUser" parameterMap="schema.User">-->
  41. <!--update from t_user where id = #{id}-->
  42. <!--</update>-->
  43.  
  44. </mapper>

  

  1. package dao;
  2.  
  3. import org.apache.ibatis.session.SqlSessionFactory;
  4. import schema.User;
  5.  
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. public interface Dao{
  10. public SqlSessionFactory ssf = null;
  11.  
  12. //使用主键查询
  13. public Object getByIdSchema(int i);
  14.  
  15. //使用非主键查询返回list
  16. public List getByConditionListSchema(Map map);
  17.  
  18. }

  

  1. package dao;
  2.  
  3. import org.apache.ibatis.session.SqlSession;
  4. import pubfun.GetSqlSession;
  5. import schema.User;
  6.  
  7. import java.util.List;
  8. import java.util.Map;
  9.  
  10. public class UserDao implements Dao {
  11.  
  12. @Override
  13. public Object getByIdSchema(int i) {
  14. SqlSession ss = GetSqlSession.getSqlSession();
  15. User user = ss.selectOne("user.getByIdSchema",i);
  16. ss.close();
  17. return user;
  18. }
  19.  
  20. @Override
  21. public List getByConditionListSchema(Map map) {
  22. SqlSession ss = GetSqlSession.getSqlSession();
  23. List<User> list= ss.selectList("user.getByConditionListSchema",map);
  24. ss.close();
  25. return list;
  26. }
  27.  
  28. }

  

4、测试

  1. import dao.Dao;
  2. import dao.UserDao;
  3. import schema.User;
  4.  
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. public class Main {
  10.  
  11. public static void main(String[] args) {
  12. Dao ud = new UserDao();
  13. System.out.println(ud.getByIdSchema(3));
  14.  
  15. Map user = new HashMap();
  16. user.put("uname","二");
  17. user.put("address","湖南长沙");
  18. List list = ud.getByConditionListSchema(user);
  19. System.out.println(list);
  20. }
  21. }

  

数据库:

mybaits2-Dao开发的更多相关文章

  1. Mybatis学习笔记(三) 之Dao开发

    使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法,常用还是Mapper接口开发. SqlSession的使用范围 public class test1 { ...

  2. MyBatis原始dao开发及问题总结(五)

    一.MyBatis原始Dao开发方式 1.原始dao开发需要程序员编写dao接口和dao接口实现类 编写UserDao接口:UserDao.java package codeRose.dao; pub ...

  3. Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6869133.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)——My ...

  4. Mybatis的原始dao开发方法

    在进入主题之前先提一下sqlSession.sqlSession是一个面向用户(程序员)的接口. sqlSession中提供了很多操作数据库的方法,如: selectOne(返回单个对象).selec ...

  5. Mybatis-spring 传统dao开发

    jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?chara ...

  6. Mybatis学习2传统dao开发

    传统dao开发 在mybati基础上 dao和daoimpl 1.工厂工具类 获得SqlSessionFactory SqlSessionFactoryUtil.java package util; ...

  7. Mybatis学习(2)原始dao开发和使用mapper接口代理开发

    基础知识: 1).SqlSessionFactoryBuilder: 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory.将SqlSessionFact ...

  8. mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)

    5 mybatis开发dao的方法 5.1 SqlSession使用范围 5.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂 ...

  9. java-mybaits-00202-DAO-原始DAO开发方法

    原始Dao开发方法需要程序员编写Dao接口和Dao实现类. 原本的ibatis的           需要在dao实现类中注入一个SqlSessionFactory工厂. 1.思路 程序员需要写dao ...

  10. Mybatis Dao开发方法(二)

    使用Mapper代理的方式进行开发 Mapper开发的原理   使用Mybatis的Mapper代理方式进行开发,使用该方式,只需要编写Mapper接口,不再需要编写实现类,由Mybatis框架通过接 ...

随机推荐

  1. emacs版本差异(转载)

    emacs23 就是原装的,由 gnu 发布的 emacs.emacs-lucid 是由 ubuntu 调整过的.emacs-nox 是不带 x system 的 emacs 版本.除非只在终端下用, ...

  2. STS和Eclipse安装Lombok插件

    参考:https://www.cnblogs.com/caozx/p/9510354.html 参考:https://blog.csdn.net/wutian90/article/details/87 ...

  3. bzoj 4551: [Tjoi2016&Heoi2016]树【并查集】

    看起来像是并查集,但是是拆集合,考虑时间倒流,先把标记都打上,然后把并查集做出来 每次到一个修改点就把这个点的计数s[u]--,当这个s为0时就把这个点和他的父亲合并(因为可能有多次标记) #incl ...

  4. P5161 WD与数列(后缀自动机+线段树合并)

    传送门 没想出来→_→ 首先不难看出要差分之后计算不相交也不相邻的相等子串对数,于是差分之后建SAM,在parent树上用线段树合并维护endpos集合,然后用启发式合并维护一个节点对另一个节点的贡献 ...

  5. IT兄弟连 JavaWeb教程 Servlet中定义的变量的作用域类型

    在Java语言中,局部变量和实力变量有着不同的作用于,它们的区别如下: 局部变量在一个方法中定义,每当一个线程执行局部变量所在的方法时,在线程的堆栈中就会创建这个局部变量,当线程执行完该方法,局部变量 ...

  6. js和jquery给iframe src赋值的3种方法

    js和jquery给iframe src赋值的3种方法   网页使用iframe嵌入网页时,有时候需要动态处理src的值,而不是写死的,所以我们需要知道如何给iframe src赋值,通常是使用js或 ...

  7. Educational Codeforces Round 19 C

    Description Petya recieved a gift of a string s with length up to 105 characters for his birthday. H ...

  8. HDOJ 5475 An easy problem

    题目传送门 题意:一个计算器,两种操作,乘上x,或者除掉之前的某个x,结果取模输出 分析:因为取模不支持除法,然后比赛时想到用逆元,结果发现MOD需要与b互质,结果一直苦苦寻找求逆元的其它方法.后来队 ...

  9. Win7执行应用报CLR20r3错误处理记录

    Windows7环境下运行应用报"CLR20r3"错误,错误信息如下: 问题详细信息: 问题签名: 问题事件名称: CLR20r3 问题签名 : qbbtools.exe 问题签名 ...

  10. Win10新机的安装与配置

    一.快捷键 打开Chrome上次关闭的所有标签页:Ctrl-Shift-T 二.问题解决 1. 右键取得管理员权限 https://www.tenforums.com/tutorials/3841-a ...