将接口,普通的java对象映射成数据库中的记录 mybatis 简化 jdbc


JDBC的数据连接

package com.mybatis;import java.sql.*;public class sql {public static void main(String[] args) {Connection con  = null;                             //连接对象  PreparedStatement prs = null;                       //查询对象ResultSet rs = null;                                //结果集try {Class.forName("com.mysql.cj.jdbc.Driver");      //加载驱动类String url = "jdbc:mysql://localhost:3306/ssm_mybatis?serverTimezone=UTC";String user ="root";String password = "88888888";con = DriverManager.getConnection(url, user, password);///获取连接String sql = "select * from user where u_sex = ?"; prs = con.prepareStatement(sql);prs.setInt(1,0);rs = prs.executeQuery();                        //输出结果 while(rs.next()) {System.out.println(rs.getString("u_id") +" "+rs.getString("u_username"));}}catch (Exception e) {// TODO Auto-generated catch blockSystem.out.println("连接异常");}finally {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {prs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
}

mybatis

导包 :

配置文件

http://www.mybatis.org/mybatis-3/zh/getting-started.html(映射sql文件 以及配置文件)
约束导入 通过下面的方法

通过ID 修改数据库

https://www.imooc.com/qadetail/248450?lastmedia=1
sqlMapConfig.xml 的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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"/><!-- 小型配置文件的相对路径 以及 driver =url 的值!!!!!! --><dataSource type="POOLED"><!-- 连接池连接数据库 --><property name="driver" value="com.mysql.cj.jdbc.Driver"/><!-- 加载驱动类 --><property name="url" value="jdbc:mysql://localhost:3306/ssm_mybatis?serverTimezone=UTC"/><!-- useSSL=false --><property name="username" value="root"/><property name="password" value="88888888"/></dataSource></environment></environments>   <mappers><mapper resource="mapper/UserMapper.xml"/><!-- 复制导入mapper --></mappers>
</configuration>

userdao类: 变量要用包装类!!!

package com.bean;import java.util.Date;public class user {//用包装类 减少一些问题private Integer u_id;private String u_username;private String u_password;private String u_sex;private Integer u_cid;private Date u_createtime;public Integer getU_id() {return u_id;}public void setU_id(Integer u_id) {this.u_id = u_id;}public String getU_username() {return u_username;}public void setU_username(String u_username) {this.u_username = u_username;}public String getU_password() {return u_password;}public void setU_password(String u_password) {this.u_password = u_password;}public String getU_sex() {return u_sex;}public void setU_sex(String u_sex) {this.u_sex = u_sex;}public Integer getU_cid() {return u_cid;}public void setU_cid(Integer u_cid) {this.u_cid = u_cid;}public Date getU_createtime() {return u_createtime;}public void setU_createTime(Date u_createTime) {this.u_createTime = u_createTime;}@Overridepublic String toString() {return "dao [u_id=" + u_id + ", u_username=" + u_username + ", u_password=" + u_password + ", u_sex=" + u_sex+ ", u_cid=" + u_cid + ", u_createtime=" + u_createtime + "]";}
}

userMapper.xml 查询文件的配置!!!

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UserMapper"><select id="selectUserById" parameterType="Integer" resultType="com.bean.user">select * from user where u_id = #{id}</select>
</mapper>

测试类:

package com.mybatis;
import java.io.IOException;
import java.io.InputStream;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;
import com.bean.user;public class test {@Test                                                               // 通过id 查询用户public void test() throws IOException {String resource = "sqlMapConfig.xml";InputStream in = Resources.getResourceAsStream(resource);       // 读出配置文件SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); // 创建sqlsession Factory Builder SqlSessionFactory ssf= ssfb.build(in);                      // 生产一个sqlsessionfactorSqlSession session = ssf.openSession();;//sql语句的查询user s = session.selectOne("UserMapper.selectUserById",1);      // 操作数据库 System.out.println(s);}}

用户名模糊查找!!!

 <select id="selectUserByName" parameterType="String" resultType="com.bean.user">select * from user where u_username like '%${value}%'</select>
List<user> s = session.selectList("UserMapper.selectUserByName","王");       // 操作数据库 for(user e : s) {                                           //foreach 输出System.out.println(e);}

报警告WARNING: An illegal reflective access operation has occurred版本太高

字符串拼接${value} 跟占位符的区别 #{id}
字符串拼接易发生异常注入问题 1=1
要改写为占位符                   ${value}      =>      "%"#{value}"%"
添加一个用户
事务要提交!!!!
小心userdao 不要错了  大小写问题 !!!Date错了找了好久!!!   跟数据库的字段大小一致!!!

                user u  = new user();u.setU_username("陈耿聪");u.setU_password("820882");u.setU_sex("1");u.setU_cid(1);session.insert("UserMapper.insertUser",u);      // 操作数据库 session.commit();

插入配置的语句

 <insert id="insertUser" parameterType="com.bean.user">insert into user values(null , #{u_username},#{u_password},#{u_sex},null,#{u_cid})</insert>

修改用户

            user u  = new user();u.setU_id(13);u.setU_username("cznczai");session.update("UserMapper.updateUser",u);      // 操作数据库 session.commit();

配置文件为

<update id="updateUser" parameterType="com.bean.user">update user set u_username = #{u_username} where u_id = #{u_id}</update>

删除用户

        u.setU_username("陈耿聪");session.delete("UserMapper.deleteUserByname",u);        // 操作数据库 session.commit();

配置文件:

 <delete id="deleteUserByname" parameterType="String>delete from user where u_username = #{u_username}</delete>
mybatis DAO开发!!!
UserMapper.xml和SqlMapConfig.xml 依旧不变

userdao.class

package com.my.dao;import com.bean.user;public interface userdao {//根据查询id用户public user getId(Integer id) ;
}

userdaoImpl.class

把之前test 文件进行拆分

package com.my.dao;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import com.bean.user;//ctrl + shift + o 删除没用到的包
public class userdaoImpl implements userdao {private SqlSessionFactory ssf;                          //sqlSessionFactory//alt shift + s  -> Generate Constructor ......             //生成构造器public userdaoImpl(SqlSessionFactory ssf) {                     //通过构造器给ssf赋值super();this.ssf = ssf;}public user getId(Integer id)  {SqlSession session = ssf.openSession();return session.selectOne("UserMapper.selectUserById",id);}}

userdaoTest

package com.mybatis;import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.bean.user;
import com.my.dao.userdao;
import com.my.dao.userdaoImpl;public class UserDaoTest {private static SqlSessionFactory ssf;static {try {InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();ssf = ssfb.build(in);in.close();} catch (IOException e) {e.printStackTrace();}}@Testpublic void DaoTest() {userdao Dao = new userdaoImpl(ssf);user u = Dao.getId(1);System.out.println(u);}
}

重复代码进行合并 并简化操作代码 剩下两行!!!!

mybatis >> jdbc
spell报错 拼写报错可以屏蔽

转载于:https://www.cnblogs.com/cznczai/p/11155899.html

【mybatis】学习笔记 1配置 搭建 入门案例相关推荐

  1. mybatis学习笔记(3)-入门程序一

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...

  2. Mybatis学习笔记(二)【框架基础搭建】

    Mybatis框架基础搭建 一.数据库搭建 二.创建一个maven工程 三.在pom.xml中导入依赖 四.创建一个mybatis的核心配置文件 配置连接数据库的字段值文件(如果使用方式一就不需要配置 ...

  3. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  4. 超详细Mybatis学习笔记(可供下载)

    文章目录 1.简介 2.第一个Mybatis程序 搭建环境 编写代码 测试 3.CRUD(增删改查) 3.1.几个属性 3.2.select 3.3.insert 3.4.delete 3.5.upd ...

  5. MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三

    前面的文章介绍了MyBatis多参数传递的注解.参数默认命名等方式,今天介绍Map的方式.仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:http://d ...

  6. MyBatis多参数传递之混合方式——MyBatis学习笔记之十五

    在本系列文章的<MyBatis多参数传递之Map方式示例>一文中,网友mashiguang提问如下的方法如何传递参数:public List findStudents(Map condit ...

  7. MyBatis学习笔记2 ——第一个MyBatis程序

    MyBatis学习笔记2 --第一个MyBatis程序 参考教程B站狂神https://www.bilibili.com/video/BV1NE411Q7Nx 环境搭建 建立一个mybatis数据库用 ...

  8. Mybatis学习笔记——第一天

    Mybatis学习打卡 Mybatis学习笔记---第一天 Mybatis笔记 第一天 一.引言 1. 现有Jdbc的缺陷 2. Mybatis框架 3. 搭建环境 1) 引入jar包 2) 引入配置 ...

  9. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

最新文章

  1. 基于OpenCV之视频读取,处理和显示框架的搭建(一)
  2. C++实现顺序查找(附完整源码)
  3. HDU - 4348 To the moon(主席树区间更新-标记永久化)
  4. web——Tomcat Maven插件及Servlet入门
  5. 诗与远方:无题(八十七)
  6. c# getresponsestream返回byte[]_C#通过SharpZipLib库创建压缩文件
  7. eclipse导入jar包的三种方法
  8. 今天算做正式开始SP开发吧,第一步当然是将down下来的资料好好地看一看,顺便也记下这些有用的地址...
  9. 6. 标准 I/O 库
  10. 使用BabeLua在VS中创建Lua项目。
  11. 那些烦人的VC++库、win10中的VC++库(全部)
  12. 双11有哪些好用的降噪蓝牙耳机值得推荐?降噪蓝牙耳机性价比排行
  13. Debian10自签CA证书
  14. glusterfs 文件服务器 搭建
  15. php入门学习-----父类子类继承
  16. 对折纸张(蓝桥杯真题)
  17. javascript 快速获取图片实际大小的宽高
  18. 从DataSet 导出到Excel(是DataSet中的每个DataTable对应每个Sheet)
  19. linux解压gz.gz文件,linux解压tar.gz并重命名_linux解压tar.gz文件
  20. 系统设计面试的万金油

热门文章

  1. SQL管理员sss或navicat premium连接自定义非1433端口说明
  2. CSRF(跨站请求伪造攻击)详解以及防护之道
  3. 计算机丢失quartz.dll什么意思,全民K歌运行时提示quartz.dll文件丢失,如何修复
  4. 传奇服务器固态硬盘和陈列,租用服务器选择固态硬盘的优点和缺点
  5. 如何在VScode中实现markdown所见即所得的实时预览
  6. pwm原理与stm32控制
  7. 现代永磁同步电机控制原理及matlab仿真_永磁同步电机是什么?
  8. TN905红外测温驱动
  9. 基于JAVAEE的洗衣店费用管理系统
  10. hdu 1824-Let's go home 2-SAT (模板)