mybatis入门
来源:互联网 发布:中国云计算用户大会 编辑:程序博客网 时间:2024/06/03 19:07
开发任务为:
1.根据id查询用户信息
2.根据用户名模糊查信息
3.添加用户
4.添加用户时,.将插入数据的主键返回到stu对象中(两种方式:1.SELECT LAST_INSERT_ID() 2.SELECT UUID())
6.删除用户
7.更新用户
搭建mybatis环境:
新建一个web工程,加入jar文件(mybatis-3.2.7.jar是mybatis核心jar)
下载jar地址 https://github.com/mybatis/mybatis-3/releases
创建SqlMapConfig.xml文件(mybatis.xml文件)配置mybatis数据源,加载mapper配置文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration SYSTEM "http://mybatis.org/dtd/mybatis-3-config.dtd" ><configuration><!--数据源--><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!-- 加载mapper配置文件 --><mappers><mapper resource="sqlmap/stu.xml"/></mappers></configuration>
配置日志文件log4j.properties
# Global logging configuration#在开发环境下日志级别设置为DEBUG,生产环境下设置为stdout、infolog4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
工程结构为
创建entity
package pojo;public class Stu {private long id;private String name;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Stu [id=" + id + ", name=" + name + "]";}}
创建mapper映射文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="test"><!--将sql语句封装到mappedStatement对象中parameterType指的是输入的参数类型resultMap指的是sql输出的结果的类型(java对象)#{id} #{}指的是占位符号,id表示输入参数类型 --> <select id="findStuById" parameterType="int" resultType="pojo.Stu"> <!-- select * from stu where id=#{id} --> select * from stu where id=#{value} </select> <!-- 根据用户名模糊查信息 ${}表示拼接符号,会引起sql注入 --> <select id="findStuByName" parameterType="java.lang.String" resultType="pojo.Stu"> select * from stu where name like '%${value}%' </select> <!-- 添加用户 --> <insert id="insertStu" parameterType="pojo.Stu"> <!-- 将插入数据的主键返回到stu对象中 SELECT LAST_INSERT_ID():得到insert进去的主键值,适用于自增的主键 keyProperty:将查询到的主键值设置到parameterType指定的对象的哪个属性 order:SELECT LAST_INSERT_ID() 相对于insert的执行顺序 resultType:指定SELECT LAST_INSERT_ID()的结果类型 --> <selectKey order="AFTER" resultType="java.lang.Integer" keyProperty="id"> SELECT LAST_INSERT_ID() </selectKey> <!-- mysql的uuid生成主键 执行过程: 通过uuid得到主键,将主键设置到stu对象中id属性里 其次insert执行时,从stu对象中取出id属性 通过oracle的序列生成主键: SELECT 序列名.nextval() --> <!-- <selectKey order="BEFORE" resultType="java.lang.Integer" keyProperty="id"> SELECT UUID() </selectKey> --> insert into stu(id,name) VALUES (#{id},#{name}); </insert> <!--删除用户 --> <delete id="deleteStu" parameterType="java.lang.Integer"> delete from stu where id=#{id} </delete> <!-- 更新用户 #{id}:从输入的stu对象中获取id属性值 --> <update id="updatestu" parameterType="pojo.Stu"> update stu set id=#{id},name=#{name} where id=#{id} </update></mapper>
创建测试类
package tests;import java.io.IOException;import java.io.InputStream;import java.util.List;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 pojo.Stu;public class Mybatis {//根据id查询用户信息,返回一条结果@Testpublic void findStuByIdTest() throws IOException{//1.创建会话工厂String resource= "SqlMapConfig.xml";//得到文件流InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.通过工厂得到sqlsessionSqlSession session = sessionFactory.openSession();//3.通过sqlSession操作数据库// 第一个参数:statement,mapper文件中的namespace.id// 第二个resultType是输出结果的类型Stu stu = session.selectOne("test.findStuById", 1);System.out.println(stu.getName());//4.释放资源session.close();}@Testpublic void findStuByNameTest() throws IOException{String resource = "SqlMapConfig.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();//"%小%"//"小" select * from stu where name like '%小%'//List<Stu> list =session.selectList("test.findStuByName", "小");System.out.println(list);session.close();}@Testpublic void insertStuTest() throws IOException{String resource = "SqlMapConfig.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();Stu stu = new Stu();stu.setName("小号");session.insert("test.insertStu", stu);System.out.println(stu);//获取用户的主键System.out.println(stu.getId());//提交事务session.commit();session.close();}@Testpublic void deleteStuTest() throws IOException{String resource = "SqlMapConfig.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();session.delete("test.deleteStu", 8);//提交事务session.commit();session.close();}@Testpublic void updatestuTest() throws IOException{String resource = "SqlMapConfig.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();Stu stu = new Stu();stu.setId(7);stu.setName("小美");session.update("test.updatestu", stu);System.out.println(stu);//获取用户的主键System.out.println(stu.getId());//提交事务session.commit();session.close();}}
sqlsession对象的方法:
查询返回一条数据时用selectOne
查询返回多条数据时用selectList
添加数据时用insert
删除数据时用delete
更新数据时用update
注意:
增删改需要事务
sqlsession开启记得关闭
#{}与${}区别
#{}是占位符
${}是拼接符,会有sql注入问题,不安全,order by时使用
阅读全文
0 0
- MyBatis入门
- MyBatis 入门
- myBatis入门
- MyBatis入门
- mybatis入门
- MyBatis入门
- Mybatis入门
- Mybatis入门
- Mybatis入门
- mybatis入门
- Mybatis入门
- mybatis入门
- mybatis入门
- mybatis 入门
- mybatis入门
- Mybatis入门
- mybatis入门
- MyBatis入门
- 值类型、引用类型、拆箱装箱
- Java 通过 sessionId 获取 Session
- Python之字符串
- 利用OPENCV为android相机开发图像处理库
- PAT (Advanced) 1014. Waiting in Line (30)
- mybatis入门
- javaweb 作业
- 头文件
- socket.io的emit使用清单
- javaweb基础(一)
- MacOS 开发
- <c语言经典100例>c17 完数
- mysql主从同步
- Spark scheduler内核理解