• mybatis-3.5.2增删查改


    这玩意没啥技术含量,只不过长时间不用,就显得生疏了。正好今天想读取一个文件写入数据库,平时都是集成环境,都碰不到这些基础东西,看来还是需要时常给自己找活干。

    首先建立一个maven工程。

    next

    next

    Finish

    引入依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.demo</groupId>
        <artifactId>mybatis-crud</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.59</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j -->
            <dependency>
                <groupId>com.belerweb</groupId>
                <artifactId>pinyin4j</artifactId>
                <version>2.5.1</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.8</version>
                <scope>provided</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.2</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

    这里呢,我是读取一个JSON文件,所以需要JSON解析;然后我还需要识别字段名称首字母,所以还引入了pinyin4j;

    最终目录结构

    数据表:

    CREATE TABLE `province` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(32) DEFAULT NULL COMMENT '名称',
      `level` tinyint(4) DEFAULT NULL COMMENT '级别(1-省;2-市;3-区)',
      `province` varchar(2) DEFAULT NULL COMMENT '省编号',
      `city` varchar(2) DEFAULT NULL COMMENT '市编号',
      `county` varchar(2) DEFAULT NULL COMMENT '区编号',
      `letter_sort` char(1) DEFAULT NULL COMMENT 'A-Z排序(仅限市级字母开头)',
      `create_time` datetime DEFAULT NULL COMMENT '创建时间',
      `create_user` varchar(32) DEFAULT NULL COMMENT '创建人',
      `update_time` datetime DEFAULT NULL COMMENT '更新时间',
      `update_user` varchar(32) DEFAULT NULL COMMENT '更新人',
      `delete_flag` tinyint(1) DEFAULT '0' COMMENT '删除标志(0-否;1-是)',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='省市区';

    实体类:

    package com.demo.entity;
    
    import lombok.Getter;
    import lombok.Setter;
    import lombok.ToString;
    
    import java.util.Date;
    
    @Getter
    @Setter
    @ToString
    public class Province {
    
        private int id;
        private String name;
        private int level;
        private String sheng;
        private String di;
        private String xian;
        private String letterSort;
        private Date createTime;
        private String createUser;
        private Date updateTime;
        private String updateUser;
    }

    mybatis-config.xml

    <?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/mytest?useSSL=false"/>
                    <property name="username" value="root"/>
                    <property name="password" value="1234"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="mapper/ProvinceMapper.xml"/>
        </mappers>
    </configuration>

    ProvinceMapper

    package com.demo.dao;
    
    import com.demo.entity.Province;
    import org.apache.ibatis.annotations.Param;
    
    import java.util.List;
    
    public interface ProvinceMapper {
    
        int insert(Province province);
    
        List<Province> getList(@Param("limitStart") int limitStart, @Param("limitEnd") int limitEnd);
    
        int update(Province province);
    
        int delete(int id);
    }

    ProvinceMapper.xml

    <?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.demo.dao.ProvinceMapper">
        <resultMap id="BaseMap" type="com.demo.entity.Province">
            <id column="id" property="id"/>
            <result column="name" property="name"/>
            <result column="level" property="level"/>
            <result column="province" property="sheng"/>
            <result column="city" property="di"/>
            <result column="county" property="xian"/>
            <result column="letter_sort" property="letterSort"/>
            <result column="create_time" property="createTime"/>
            <result column="create_user" property="createUser"/>
            <result column="update_time" property="updateTime"/>
            <result column="update_user" property="updateUser"/>
        </resultMap>
    
        <insert id="insert" parameterType="com.demo.entity.Province">
            insert into province(name, level, province, city, county, letter_sort, create_time, create_user, update_time, update_user)
            values(#{name},#{level},#{sheng},#{di},#{xian},#{letterSort},#{createTime},#{createUser},#{updateTime},#{updateUser})
        </insert>
        <select id="getList" resultMap="BaseMap">
            select * from province limit #{limitStart},#{limitEnd}
        </select>
        <update id="update" parameterType="com.demo.entity.Province">
            update province set name = #{name} where id = #{id}
        </update>
        <delete id="delete" parameterType="int">
            delete from province where id = #{id}
        </delete>
    </mapper>

     ProvinceUtils

    package com.demo;
    
    import com.alibaba.fastjson.JSONArray;
    import com.demo.entity.Province;
    import com.demo.dao.ProvinceMapper;
    import net.sourceforge.pinyin4j.PinyinHelper;
    import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
    import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
    import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
    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.*;
    import java.util.Date;
    import java.util.List;
    
    
    public class ProvinceUtils {
    
        private static void readFileToDB() throws IOException {
            FileInputStream in = new FileInputStream("省-市-县.json");
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder sb = new StringBuilder();
            String t;
            while ((t = reader.readLine()) != null){
                sb.append(t);
            }
            List<Province> cities = JSONArray.parseArray(sb.toString(), Province.class);
            cities.forEach(e -> {
                e.setLetterSort(getFirstSpell(e.getName()));
                e.setCreateTime(new Date());
                e.setUpdateTime(new Date());
                e.setCreateUser("system");
                e.setUpdateUser("system");
            });
            save(getSession(), cities);
        }
    
        /**
         * 获取首汉字拼音字母
         * @param chinese
         * @return
         */
        private static String getFirstSpell(String chinese) {
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
            String[] temp = new String[0];
            try {
                temp = PinyinHelper.toHanyuPinyinStringArray(chinese.charAt(0), defaultFormat);
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                e.printStackTrace();
            }
            return temp[0].charAt(0)+"";
        }
    
        private static void save(SqlSession sqlSession, List<Province> cities){
            ProvinceMapper mapper = sqlSession.getMapper(ProvinceMapper.class);
            cities.forEach(e -> {
                if (!e.getName().equals("市辖区")){
                    int i = mapper.insert(e);
                    System.out.println(i + ":" + e);
                }
            });
            sqlSession.commit();
            sqlSession.close();
        }
    
        /**
         * 获取session
         * @return
         * @throws IOException
         */
        private static SqlSession getSession() throws IOException {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
            return factory.openSession();
        }
    
        // ----------------------------------------------------------
    
        /**
         * 测试插入
         * @throws IOException
         */
        private static void insertDemo() throws IOException {
            SqlSession session = getSession();
            Province province = new Province();
            province.setName("Hello!!!");
            ProvinceMapper mapper = session.getMapper(ProvinceMapper.class);
            int i = mapper.insert(province);
            session.commit();
            System.out.println(i);
        }
        /**
         * 测试读取
         * @throws IOException
         */
        private static void selectDemo() throws IOException {
            ProvinceMapper mapper = getSession().getMapper(ProvinceMapper.class);
            mapper.getList(0, 10).forEach(System.out::println);
        }
        /**
         * 测试更新
         * @throws IOException
         */
        private static void updateDemo() throws IOException {
            SqlSession session = getSession();
            Province province = new Province();
            province.setId(3230);
            province.setName("Change!!!");
            ProvinceMapper mapper = session.getMapper(ProvinceMapper.class);
            int i = mapper.update(province);
            session.commit();
            System.out.println(i);
        }
        /**
         * 测试删除
         * @throws IOException
         */
        private static void deleteDemo() throws IOException {
            SqlSession session = getSession();
            ProvinceMapper mapper = session.getMapper(ProvinceMapper.class);
            mapper.delete(3230);
            session.commit();
        }
    
        public static void main(String[] args) throws Exception {
    //        readFileToDB();
    //        insertDemo();
    //        selectDemo();
    //        updateDemo();
    //        deleteDemo();
        }
    }

    插入结果:

    更新结果:

    读取结果:

    如果你想要那个JSON文件:https://github.com/Mysakura/DataFiles

  • 相关阅读:
    java实现趣味拼算式
    windows下安装docker
    Docker_入门?只要这篇就够了!(纯干货适合0基础小白)
    网关支付、银联代扣通道、快捷支付、银行卡支付分别是怎么样进行支付的?
    【深度解析】第三方支付的分类、接口与支付流程
    去外包公司的伙伴们小心了!——亲身经历,数数外包公司的坑
    一个tomcat下部署多个项目或一个服务器部署多个tomcat
    tomcat部署web应用的4种方法以及部署多个应用
    datatables增删改查的实现
    基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
  • 原文地址:https://www.cnblogs.com/LUA123/p/11353762.html
Copyright © 2020-2023  润新知