mybaits2-Dao开发
项目结构:
1、创建project,导入相关依赖(前提)。配置db.properties与mybaits-config
- #mysql驱动
- db.driver=com.mysql.jdbc.Driver
- #mysql数据库连接信息
- #端口号后信息:数据库名字,是否设置数据库编码,字符编码,是否使用SSl
- #SSL协议提供的服务主要有:
- #1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
- #2)加密数据以防止数据中途被窃取;
- #3)维护数据的完整性,确保数据在传输过程中不被改变。
- db.url=jdbc:mysql://localhost:3306/mybatis_wjw?useUnicode=true&characterEncoding=UTF-8&useSSL=false
- #数据库用户
- db.username=root
- #数据库密码
- db.password=xxxx
- <?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>
- <!--加载db.properties -->
- <properties resource="db.properties"></properties>
- <!--设置别名 -->
- <typeAliases>
- <!--单个别名设置 -->
- <!-- <typeAlias type="schema.User" alias="user"/> -->
- <package name="Dao"/>
- </typeAliases>
- <!-- mybatis环境变量配置信息 -->
- <environments default="development">
- <environment id="development">
- <!-- jdbc事务控制管理,这里由mybatis管理 -->
- <transactionManager type="JDBC"/>
- <!-- 数据源配置 -->
- <dataSource type="POOLED">
- <property name="driver" value="${db.driver}"/>
- <property name="url" value="${db.url}"/>
- <property name="username" value="${db.username}"/>
- <property name="password" value="${db.password}"/>
- </dataSource>
- </environment>
- </environments>
- <!--映射文件管理 -->
- <mappers>
- <!--通过mapper.xml文件配置 -->
- <mapper resource="dao/User.xml"/>
- <!--通过类名 必需是mapper代理开发 -->
- <!--<mapper class="dao.User"/> -->
- <!--批量配置,推荐使用 -->
- <!--<package name="dao"/>-->
- </mappers>
- </configuration>
2、创建单例模式SQLSessionFctory 和 SqlSession
- package pubfun;
- 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 java.io.IOException;
- public class GetSqlSession {
- public static SqlSession getSqlSession(){
- return InitSqlSessionFactory.ssf.openSession();
- }
- private static class InitSqlSessionFactory{
- private volatile static SqlSessionFactory ssf = getSqlSessionFaactory();
- private static SqlSessionFactory getSqlSessionFaactory(){
- try {
- if(ssf==null){
- ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml") );
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return ssf;
- }
- }
- public static void main(String args[]){
- for (int i = 0; i < 5; i++) {
- new Thread(()->{
- SqlSession ss = getSqlSession();
- System.out.println("ss:"+ss);
- }).start();
- }
- }
- }
3、实现Dao层
- <?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="user">
- <select id="getByIdSchema" parameterType="int" resultType="schema.User">
- select * from t_user where tid = #{value}
- </select>
- <parameterMap id="UserParameter" type="java.util.Map">
- <parameter property="tid" javaType="java.lang.Integer"></parameter>
- <parameter property="uname" javaType="java.lang.String" ></parameter>
- <parameter property="birthday" javaType="java.util.Date"></parameter>
- <parameter property="sex" javaType="java.lang.Character"></parameter>
- <parameter property="address" javaType="java.lang.String" ></parameter>
- </parameterMap>
- <resultMap id="UserResult" type="schema.User">
- <id column="id" property="tid"></id>
- <result column="name" property="uname"></result>
- <result column="birthday" property="birthday"></result>
- <result column="sex" property="sex"></result>
- <result column="address" property="address"></result>
- </resultMap>
- <select id="getByConditionListSchema" parameterMap="UserParameter" resultType="schema.User">
- select * from t_user where 1=1 and uname like concat('%',#{uname},'%') and address = #{address}
- </select>
- <!--<insert id="insertUser" parameterMap="schema.User" >-->
- <!--insert into t_user values(#{id},#{name},#{birthday},#{sex},#{address})-->
- <!--</insert>-->
- <!--<delete id="deleteUser" parameterMap="schema.User" >-->
- <!--delete from t_user where id = #{id}-->
- <!--</delete>-->
- <!--<update id="updateUser" parameterMap="schema.User">-->
- <!--update from t_user where id = #{id}-->
- <!--</update>-->
- </mapper>
- package dao;
- import org.apache.ibatis.session.SqlSessionFactory;
- import schema.User;
- import java.util.List;
- import java.util.Map;
- public interface Dao{
- public SqlSessionFactory ssf = null;
- //使用主键查询
- public Object getByIdSchema(int i);
- //使用非主键查询返回list
- public List getByConditionListSchema(Map map);
- }
- package dao;
- import org.apache.ibatis.session.SqlSession;
- import pubfun.GetSqlSession;
- import schema.User;
- import java.util.List;
- import java.util.Map;
- public class UserDao implements Dao {
- @Override
- public Object getByIdSchema(int i) {
- SqlSession ss = GetSqlSession.getSqlSession();
- User user = ss.selectOne("user.getByIdSchema",i);
- ss.close();
- return user;
- }
- @Override
- public List getByConditionListSchema(Map map) {
- SqlSession ss = GetSqlSession.getSqlSession();
- List<User> list= ss.selectList("user.getByConditionListSchema",map);
- ss.close();
- return list;
- }
- }
4、测试
- import dao.Dao;
- import dao.UserDao;
- import schema.User;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class Main {
- public static void main(String[] args) {
- Dao ud = new UserDao();
- System.out.println(ud.getByIdSchema(3));
- Map user = new HashMap();
- user.put("uname","二");
- user.put("address","湖南长沙");
- List list = ud.getByConditionListSchema(user);
- System.out.println(list);
- }
- }
数据库:
mybaits2-Dao开发的更多相关文章
- Mybatis学习笔记(三) 之Dao开发
使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法,常用还是Mapper接口开发. SqlSession的使用范围 public class test1 { ...
- MyBatis原始dao开发及问题总结(五)
一.MyBatis原始Dao开发方式 1.原始dao开发需要程序员编写dao接口和dao接口实现类 编写UserDao接口:UserDao.java package codeRose.dao; pub ...
- Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6869133.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)——My ...
- Mybatis的原始dao开发方法
在进入主题之前先提一下sqlSession.sqlSession是一个面向用户(程序员)的接口. sqlSession中提供了很多操作数据库的方法,如: selectOne(返回单个对象).selec ...
- Mybatis-spring 传统dao开发
jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?chara ...
- Mybatis学习2传统dao开发
传统dao开发 在mybati基础上 dao和daoimpl 1.工厂工具类 获得SqlSessionFactory SqlSessionFactoryUtil.java package util; ...
- Mybatis学习(2)原始dao开发和使用mapper接口代理开发
基础知识: 1).SqlSessionFactoryBuilder: 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory.将SqlSessionFact ...
- mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)
5 mybatis开发dao的方法 5.1 SqlSession使用范围 5.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂 ...
- java-mybaits-00202-DAO-原始DAO开发方法
原始Dao开发方法需要程序员编写Dao接口和Dao实现类. 原本的ibatis的 需要在dao实现类中注入一个SqlSessionFactory工厂. 1.思路 程序员需要写dao ...
- Mybatis Dao开发方法(二)
使用Mapper代理的方式进行开发 Mapper开发的原理 使用Mybatis的Mapper代理方式进行开发,使用该方式,只需要编写Mapper接口,不再需要编写实现类,由Mybatis框架通过接 ...
随机推荐
- emacs版本差异(转载)
emacs23 就是原装的,由 gnu 发布的 emacs.emacs-lucid 是由 ubuntu 调整过的.emacs-nox 是不带 x system 的 emacs 版本.除非只在终端下用, ...
- STS和Eclipse安装Lombok插件
参考:https://www.cnblogs.com/caozx/p/9510354.html 参考:https://blog.csdn.net/wutian90/article/details/87 ...
- bzoj 4551: [Tjoi2016&Heoi2016]树【并查集】
看起来像是并查集,但是是拆集合,考虑时间倒流,先把标记都打上,然后把并查集做出来 每次到一个修改点就把这个点的计数s[u]--,当这个s为0时就把这个点和他的父亲合并(因为可能有多次标记) #incl ...
- P5161 WD与数列(后缀自动机+线段树合并)
传送门 没想出来→_→ 首先不难看出要差分之后计算不相交也不相邻的相等子串对数,于是差分之后建SAM,在parent树上用线段树合并维护endpos集合,然后用启发式合并维护一个节点对另一个节点的贡献 ...
- IT兄弟连 JavaWeb教程 Servlet中定义的变量的作用域类型
在Java语言中,局部变量和实力变量有着不同的作用于,它们的区别如下: 局部变量在一个方法中定义,每当一个线程执行局部变量所在的方法时,在线程的堆栈中就会创建这个局部变量,当线程执行完该方法,局部变量 ...
- js和jquery给iframe src赋值的3种方法
js和jquery给iframe src赋值的3种方法 网页使用iframe嵌入网页时,有时候需要动态处理src的值,而不是写死的,所以我们需要知道如何给iframe src赋值,通常是使用js或 ...
- Educational Codeforces Round 19 C
Description Petya recieved a gift of a string s with length up to 105 characters for his birthday. H ...
- HDOJ 5475 An easy problem
题目传送门 题意:一个计算器,两种操作,乘上x,或者除掉之前的某个x,结果取模输出 分析:因为取模不支持除法,然后比赛时想到用逆元,结果发现MOD需要与b互质,结果一直苦苦寻找求逆元的其它方法.后来队 ...
- Win7执行应用报CLR20r3错误处理记录
Windows7环境下运行应用报"CLR20r3"错误,错误信息如下: 问题详细信息: 问题签名: 问题事件名称: CLR20r3 问题签名 : qbbtools.exe 问题签名 ...
- Win10新机的安装与配置
一.快捷键 打开Chrome上次关闭的所有标签页:Ctrl-Shift-T 二.问题解决 1. 右键取得管理员权限 https://www.tenforums.com/tutorials/3841-a ...