标签:action 提交 tom img 比较 http 应用 upd 过程
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
l 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
l 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
l 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
l 提供映射标签,支持对象与数据库的orm字段关系映射
l 提供对象关系映射标签,支持对象关系组建维护
l 提供xml标签,支持编写动态sql。
(以上内容摘自百度百科,网址:https://baike.baidu.com/item/MyBatis/2824918?fr=aladdin)
Mybatis: mybatis-3.2.2.jar
下载地址:https://github.com/mybatis/mybatis-3/releases
Mysql驱动包:mysql-connection-java-5.1.7-bin.jar
下载地址:https://dev.mysql.com/downloads/connector/j/
create database mybatis; use mybatis; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); INSERT INTO users(NAME, age) VALUES(‘Tom‘, 12); INSERT INTO users(NAME, age) VALUES(‘Jack‘, 11);
<?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> <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> </configuration>
其中<property>中放的时连接数据库需要的信息
Driver: jdbc驱动位置
Url: 数据库路径
Username:连接数据库的用户名
Password:连接数据库密码
public class User { private int id; private String name; private int age; //get,set 方法 }
<?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="com.zhiyou.zyl.mapper.userMapper"> <select id="getUser" parameterType="int" resultType="com.zhiyou.zyl.bean.User"> select * from users where id=#{id} </select> </mapper>
Namespace: 命名空间,这里一般指向Dao接口路径,例如com.zhiyou.zyl.dao.UserDao
Select: mybatis提供的查询标签,用于查询语句的实现
id:标识唯一id,这里一定要和映射的dao接口中的方法名相同。
parameterType: 传入参数类型,这里传入的时Id
ResultType: 结果参数类型,返回类型为User实体类
#{}: 用于mybatis解析。
<mappers> <mapper resource="com/zhiyou/zyl/mapper/userMapper.xml"/> </mappers>
public class Test { public static void main(String[] args) throws IOException { String resource = "conf.xml"; //加载 mybatis 的配置文件(它也加载关联的映射文件) Reader reader = Resources.getResourceAsReader(resource); //构建 sqlSession 的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //创建能执行映射文件中 sql 的 sqlSession SqlSession session = sessionFactory.openSession(); //映射 sql 的标识字符串 ,getUser一定要和select的ID相同 String statement = "com.zhiyou.zyl.mapper.userMapper"+".getUser"; //执行查询返回一个唯一 user 对象的 sql User user = session.selectOne(statement, 1); System.out.println(user); } }
成员变量:注意这里session要定义为static,因为下面的静态方法只能调用静态属性
static SqlSession session =null; String str= "com.zhiyou.zyl.mapper.UsersMapper";
@BeforAll:在所有@Test方法执行前一定执行的内容,提高代码的复用性,这里用于加载配置文件和创建session对象。
@BeforeAll static void setUpBeforeClass() throws Exception { String resource = "conf.xml"; //加载 mybatis 的配置文件(它也加载关联的映射文件) Reader reader = Resources.getResourceAsReader(resource); //构建 sqlSession 的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //创建能执行映射文件中 sql 的 sqlSession session = sessionFactory.openSession(); }
@AfterAll 在@Test执行后一定执行的内容。Mybatis默认不会将更新,增加,删除的信息提交到数据库,需要我们调用commit()方法手动进行提交。
@AfterAll static void tearDownAfterClass() throws Exception { //提交 session.commit(); }
@Test:测试方法,直接选中方法名右击运行即可,主要用于进行各种测试
@Test void testSelectById() { Users user=session.selectOne(str+".getUser", 1); System.out.println(user); }
UserMapper.xml文件内容
<select id="getUser" parameterType="int" resultType="com.zhiyou.zyl.bean.Users"> select * from users where id=#{id} </select> <!-- 查询所有--> <select id="selectAll" resultType="com.zhiyou.zyl.bean.Users"> select * from users </select>
测试方法:
@Test void testSelectById() { Users user=session.selectOne(str+".getUser", 1); //查询一个对象方法 System.out.println(user); } @Test void testSelectAll() { List<Users> row=session.selectList(str+".selectAll"); //查询集合方法 System.out.println(row); }
UserMapper.xml文件内容:
<insert id="addUser" parameterType="com.zhiyou.zyl.bean.Users"> insert into users(name,age) values(#{name},#{age}) </insert>
测试方法:
@Test void testAddUser() { int row=session.insert(str+".addUser", new Users("张三",16)); //调用session.insert方法 System.out.println(row); }
UserMapper.xml文件内容:
<update id="updateUser" parameterType="com.zhiyou.zyl.bean.Users"> update users set name=#{name},age=#{age} where id=#{id} </update>
测试方法:
@Test void testUpdateUser() { int row=session.update(str+".updateUser", new Users(1,"李四",16));//调用session.update方法 System.out.println(row); }
UserMapper.xml文件内容:
<delete id="deleteUser" parameterType="int"> delete from users where id=#{id} </delete>
测试方法:
@Test void testDeleteUser() { int row=session.delete(str+".deleteUser",3); System.out.println(row); }
标签:action 提交 tom img 比较 http 应用 upd 过程
原文地址:https://www.cnblogs.com/zyl187110/p/11440338.html