博主分享免费Java教学视频,B站账号:Java刘哥
接着上一篇文章:Mybatis原生dao开发方法实现增删改查 写
记得添加 映射文件
2、UserMapper.xml
修改 namespace 的值,其他的不变
3、UserMapper.java
和 UserDao.java 代码一样
4、测试类 UserMapper.java
本文链接:https://liuyanzhao.com/5789.html
思路
程序员编写 mapper 接口的时候,要遵循一些开发规范,Mybatis 可以自动生成 mapper 接口实现类代理对象。 开发规范: 1、在 mapper.xml 中 namespace 等于 mapper 接口地址 2、mapper.java 接口中的方法名和 mapper.xml 和 statement 的 id 一致 3、mapper.java 接口中方法输入参数类型 和 mapper.xml 中 statement 的parameterType 指定的类型一致 4、mapper.java 接口中方法返回值类型和 mapper.xml 中的 statement 的 resultType 指定的类型一致 总结: 以上规范主要是对下边的代码进行统一生成- User user = sqlSession.selectOne("test.findUserById",2);
- List<User> list = sqlSession.selectList("test.findUserByName",username);
- sqlSession.insert("test.insertUser",user);
- sqlSession.delete("test.deleteUserById",id);
- sqlSession.update("test.updateUserById",user);
项目准备
同上篇文章基本相同 1、项目结构 ① 新建 Java 项目 ② 在 src 下新建 com.liuyanzhao.mybatis.po 包(用来放持久化类,和数据库对应) 和 com.liuyanzhao.mybatis.mapper 包 (用来放 CURD 实现代码) ③ 在 src 下新建(或者拷贝)Configuration.xml (mybatis全局配置文件)和 UserMapper.xml (映射文件) 2、导入 两个必备的 jar 包- mysql-jdbc 驱动包: mysql-connector-java-5.1.41-bin.jar
- mybatis 包:mybatis-3.4.4.jar
代码实现
1、Configuration.xml Mybatis 全局配置文件- <?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>
- <!-- 和Spring整合后,environments配置将废除-->
- <environments default="development">
- <environment id="development">
- <!--使用JDBC事务管理,事务控制由mybatis-->
- <transactionManager type="JDBC">
- <property name="" value=""/>
- </transactionManager>
- <!--数据库连接池-->
- <dataSource type="UNPOOLED">
- <property name="driver" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8"/>
- <property name="username" value="root"/>
- <property name="password" value=""/>
- </dataSource>
- </environment>
- </environments>
- <!--加载映射文件-->
- <mappers>
- <mapper resource="UserMapper.xml" />
- </mappers>
- </configuration>
- <?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">
- <!--namespace命名空间,作用是对sql进行分类话管理,理解sql,理解sql隔离
- 注意:使用mapper代理方法开发,namespace有着特殊的作用
- -->
- <mapper namespace="com.liuyanzhao.mybatis.mapper.UserMapper">
- <!--在映射文件中配置很多sql语句-->
- <!--
- id:表示映射文件中的sql
- 将sql语句封装到mappedStatement对象中,所以称id为Statement的id
- parameterType:指定输入参数的类型
- resultType:指定就是单条记录所映射的java对象类型
- #{}表示占位符,相当于?
- #{id} 其中id表示接受输入的参数,参数名就是id,如果输入的参数是简单类型,#{}中的参数可以任意,可以value或者其他名称
- ${}:表示拼接sql串,将接受到的参数的内容不加任何修饰直接拼接在sql中
- ${}安全隐患:使用${}拼接sql,引起sql注入
- ${value}:接受输入参数的内容,如果传入类型是简单类型,${}中只有使用value
- -->
- <select id="findUserById" parameterType="int" resultType="com.liuyanzhao.mybatis.po.User">
- SELECT * FROM user WHERE id=#{value}
- </select>
- <!--根据用户名称模糊查询,可能返回多条-->
- <select id="findUserByName" parameterType="java.lang.String" resultType="com.liuyanzhao.mybatis.po.User">
- SELECT * FROM user WHERE username LIKE '%${value}%'
- </select>
- <!--#{}指定pojo的属性名,接收到pojo对象的属性值,Mybatis通过OGNL获取对象的属性值-->
- <!--添加用户-->
- <insert id="insertUser" parameterType="com.liuyanzhao.mybatis.po.User">
- <!--
- 将插入数据的主键返回,返回到user对象中
- SELECT LAST_INSERT_ID(); 得到insert进去的主键值,只适用自增主键
- -->
- <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
- SELECT LAST_INSERT_ID()
- </selectKey>
- INSERT INTO user(username,birthday,gender,address) VALUE(#{username},#{birthday},#{gender},#{address})
- </insert>
- <!--删除用户,根据id-->
- <delete id="deleteUserById" parameterType="java.lang.Integer">
- DELETE FROM user WHERE id=#{id}
- </delete>
- <!--更新用户,根据id
- 需要传入用户信息
- parameterType指定user对象,包括id和更新信息。注意:id必须存在
- #{id}:从输入的user对象中获取id的属性值
- -->
- <update id="updateUserById" parameterType="com.liuyanzhao.mybatis.po.User">
- UPDATE user SET username=#{username},birthday=#{birthday},gender=#{gender},address=#{address} WHERE id=#{id}
- </update>
- </mapper>
- package com.liuyanzhao.mybatis.mapper;
- import com.liuyanzhao.mybatis.po.User;
- import java.util.List;
- /**
- * Created by Liu_Yanzhao on 2017/8/10.
- */
- public interface UserMapper {
- //根据id查询用户信息
- public User findUserById(int id) throws Exception;
- //根据username模糊查询用户信息
- public List<User> findUserByName(String name) throws Exception;
- //添加用户信息
- public void insertUser(User user) throws Exception;
- //删除用户信息
- public void deleteUserById(int id) throws Exception;
- //更新用户信息
- public void updateUserById(User user) throws Exception;
- }
- package com.liuyanzhao.mybatis.test;
- import com.liuyanzhao.mybatis.mapper.UserMapper;
- import com.liuyanzhao.mybatis.po.User;
- 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.Before;
- import org.junit.Test;
- import java.io.InputStream;
- import java.util.Date;
- import java.util.List;
- /**
- * Created by 言曌 on 2017/8/10.
- */
- public class UserMapperImplTest {
- private SqlSessionFactory sqlSessionFactory;
- @Before
- public void setUp() throws Exception {
- String resource = "Configuration.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- sqlSessionFactory = new SqlSessionFactoryBuilder()
- .build(inputStream);
- }
- //测试 根据id查询用户
- @Test
- public void testFindUserById() throws Exception {
- SqlSession sqlSession = sqlSessionFactory.openSession();
- //创建UserMapper对象,mybatis自动生成mapper代理对象
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- //调用userMapper方法
- User user = userMapper.findUserById(6);
- System.out.println(user);
- }
- //测试 根据username查询用户
- @Test
- public void testFindUserByName() throws Exception {
- SqlSession sqlSession = sqlSessionFactory.openSession();
- //创建UserMapper对象,mybatis自动生成mapper代理对象
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- //调用usermapper对象
- List<User> list = userMapper.findUserByName("明");
- System.out.println(list);
- }
- //添加用户信息
- @Test
- public void testInsertUser() throws Exception {
- SqlSession sqlSession = sqlSessionFactory.openSession();
- //获得UserMapper对象
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- //创建对象,存储信息
- User user = new User();
- //
- user.setUsername("李小成");
- user.setGender("男");
- user.setBirthday(new Date());
- user.setAddress("陕西榆林");
- userMapper.insertUser(user);
- sqlSession.commit();
- }
- //测试,根据id删除用户
- @Test
- public void testDeleteUserById() throws Exception {
- SqlSession sqlSession = sqlSessionFactory.openSession();
- //获得UserMapper对象
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- //删除操作
- userMapper.deleteUserById(1);
- //提交事务
- sqlSession.commit();
- }
- //测试,根据id更新用户
- @Test
- public void testUpdateUserById() throws Exception {
- SqlSession sqlSession = sqlSessionFactory.openSession();
- //获得UserMapper对象
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- //创建对象,存储信息
- User user = new User();
- user.setId(2);
- user.setUsername("岳小飞");
- user.setGender("男");
- user.setBirthday(new Date());
- user.setAddress("河南安阳");
- //更新用户
- userMapper.updateUserById(user);
- //提交事务
- sqlSession.commit();
- }
- }
- 微信
- 交流学习,有偿服务
- 博客/Java交流群
- 资源分享,问题解决,技术交流。群号:590480292
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏