前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python练习

python练习

作者头像
py3study
发布于 2020-01-09 09:24:48
发布于 2020-01-09 09:24:48
1K0
举报
文章被收录于专栏:python3python3

Python统计列表中的重复项出现的次数的方法

#方法1:

mylist = [1,2,2,2,2,3,3,3,4,4,4,4]

myset = set(mylist)  #myset是另外一个列表,里面的内容是mylist里面的无重复 项

for item in myset:

  print("the %d has found %d" %(item,mylist.count(item)))

#方法2:

List=[1,2,2,2,2,3,3,3,4,4,4,4]

a = {}

for i in List:

  if List.count(i)>1:

    a[i] = List.count(i)

print (a)

"""利用字典的特性来实现。

方法3:"""

>>> from collections import Counter

>>> Counter([1,2,2,2,2,3,3,3,4,4,4,4])

Counter({1: 5, 2: 3, 3: 2})

方法4:只用列表实现的方法:

l=[1,4,2,4,2,2,5,2,6,3,3,6,3,6,6,3,3,3,7,8,9,8,7,0,7,1,2,4,7,8,9]

count_times = []

for i in l :

  count_times.append(l.count(i))

m = max(count_times)

n = l.index(m)

print (l[n])

其实现原理就是把列表中的每一个数出现的次数在其对应的位置记录下来,然后用max求出出现次数最多的位置 

# 简单的拼手气红包

import random

from time import sleep

# 所有涉及金额的浮点数都需要用 round 方法保留2位小数,避免出现最终结果多出0.01

amount = round(float(input('请设置红包的金额 \> ')),2)

num = int(input('请设置红包的数量 \> '))

hb_dict = {}

xing = '赵钱孙李周吴郑王'

ming = '一二三四五六七八九十'

while num:

    xingming = random.choice(xing)+random.choice(ming)+random.choice(ming)

    if xingming in hb_dict.keys():

        xingming = random.choice(xing)+random.choice(ming)+random.choice(ming)

    num -= 1

    if num == 0:

        print('%s抢到红包%.2f元 红包抢完了!' % (xingming,amount))

        hb_dict[amount] = xingming

        amount -= amount

    elif num > 0:

        hb = round(random.uniform(0.01,amount)/num,2)

        hb_dict[hb] = xingming

        # 算法: 在0.01到红包总金额之间随机一个浮点数 / 红包剩余个数

        print('%s抢到红包%.2f元 剩余%d个!' % (xingming,hb,num))

        amount = round((amount - hb),2)

    sleep(1)

# 转置字典中的 key / value

# hb_dict2 = {value:key for key,value in hb_dict.items()}

max_hb = max(hb_dict.items())

print('%s运气最佳 抢得%.2f元!!' % (max_hb[1],max_hb[0]))

mongodb基本操作及常用命令

查看已有的数据库,默认有个local

show dbs

查看已有的或集合,默认有个test

db

连接到指定的数据库,如果数据库不存在,则创建数据库

use easondb

往数据库easondb的集合mycol中插入一条数据 可以使用insert或save方法

db.mycol.insert({'id':1,'name':'Eason','age':25,'tags':['Linux','Python','MongoDB']})

db.mycol.save({'id':2,'name':'imaoxian','age':28,'tags':['C++','Java','javascript']})

查看集合中的数据,加上pretty()以结构化方式查看,也可以在find()中加入条件 符号对应关系 <:$lt <=:$lte >:$gt >=:ge !=:$ne

条件操作符详细教程:http://www.runoob.com/mongodb/mongodb-operators.html

db.mycol.find()

db.mycol.find().pretty()

db.mycol.find({'id':{$lte:2}})

根据条件查询

db.mycol.find({'id':2})

更新集合中的数据

db.mycol.update({'id':2},{$set:{'name':'Maoxian','age':29}})

删除集合中的数据

db.mycol.remove({'id':2})

删除集合

db.mycol.drop()

删除数据库

use easondb

db.dropDatabase()

python操作mongodb

import pymongo  # 导入pymongo模块

client = pymongo.MongoClient('127.0.0.1',27017)     # 创建一个mongo连接

db = client['testdb']                           # 定义一个名为testdb的 DB

sheet1 = testdb['sheet1']                       # 定义一个名为sheet1的 表

for i in range(100):

    # 循环生成一组词典

    data = {

        'i':i,

        'i*i':i*i

    }

    # 将词典insert到sheet1表中

    sheet1.insert_one(data)

# 读取出sheet1 中的数据

for item in sheet1.find():

    print(item) 

python:pymysql数据库操作

import pymysql

# 获取一个数据库连接,注意如果是UTF-8类型的,需要制定数据库

db = pymysql.connect(host="127.0.0.1",user="root",passwd="123456",db="mysql",charset='utf8' )

# 使用 cursor()方法创建一个游标对象 cursor

cursor = db.cursor()

# 使用 execute()方法执行 SQL 查询

cursor.execute("SELECT user,host,password from user")

# 使用 fetchall()方法获取所有行.

data = cursor.fetchall()

print(data)

cursor.close()#关闭游标

db.close()#关闭数据库连接

import pymysql

db = pymysql.connect(host='10.3.1.174',user='root',password='123456',db='test')

cursor = db.cursor()

# SQL 插入数据

sql = "INSERT INTO employee (first_name, last_name, age, sex, income) " \

      "VALUES ('w', 'Eason', '29', 'M', '8000')"

# SQL 更新数据

# sql = "UPDATE employee first_name = Wang WHERE first_name = w"

# SQL 删除数据

# sql = "DELETE FROM employee WHERE age > 20"

try:

    cursor.execute(sql)

    db.commit()

except:

    db.rollback()

db.close()

随机生成200个序列号存入文件

import random

import string

for num in range(200):

    numlist = []

    for i in range(12):

        numlist.append(random.choice(string.ascii_uppercase+string.digits))

    # print(''.join(numlist))

    with open('200.txt', 'a') as f:     # 'a' 表示追加写入

        f.write(''.join(numlist)+'\n')

写一个理财计算器,实现将每日/月/年的利息进行复投进行计算

money = float(input('请输入您打算用来投资的本金 \> '))

year = int(input('请输入投资期限(单位:年) \> '))

rate = float(input('请输入投资年化收益率 \> '))

Type = int(input('''1.每日利息复投 2.每月利息复投 3.每年利息复投

    请选择复投方式 \> '''))

def day_return(money,year,rate=0.12):

    '方案:每日利息加入本金复投!'

    for y in range(year):

        for day in range(365):

            money = money*rate/365 + money

        print('第%d年结束时,本金为:%.2f' % (y+1,money))

def month_return(money,year,rate=0.12):

    '方案:每月利息加入本金复投!'

    for y in range(year):

        for month in range(12):

            money = money*rate/12 + money

        print('第%d年结束时,本金为:%.2f' % (y+1,money))

def year_return(money,year,rate=0.12):

    '方案:每年利息加入本金复投!'

    for y in range(year):

        money = money*rate + money

        print('第%d年结束时,本金为:%.2f' % (y+1,money))

if Type == 1:

    day_return(money,year,rate)

elif Type == 2:

    month_return(money,year,rate)

elif Type == 3:

    year_return(money,year,rate)

else:

    print('输入有误!') 

百度翻译

# Python 3.5.1

from urllib import request, parse

import json

url = 'http://fanyi.baidu.com/v2transapi'

context = input('请输入需要翻译的内容 :\> ')

if context >= '\u4e00' and context <= '\u9fa5':

    # 判断输入内容是否为汉字

    From,To = 'zh','en'

else:

    From,To = 'en','zh'

data = {

    'query':context,

    'from':From,

    'to':To,

    'transtype':'translang',

    'simple_means_flag':3

}

data = parse.urlencode(data).encode('utf-8')

r = request.Request(url,data)

r.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0')

html = request.urlopen(r).read().decode('utf-8')

Result = json.loads(html)

print('翻译结果为:' + Result['trans_result']['data'][0]['dst']) 

python:乘法表

# for 循环

for i in range(1,10):

    for j in range(1,i+1):

        print('%dx%d=%d' % (j,i,j*i),end='\t')

    print()

# while 循环

m = 1

while m < 10:

    n = 1

    while n < m+1:

        print('%dx%d=%d' % (n,m,m*n),end='\t')

        n+=1

    m+=1

    print() 

生成激活码

#!/usr/bin/env python

#encoding:utf-8

#Author:sean

import string

import random

#激活码中的字符和数字

field = string.letters + string.digits

#获得四个字母和数字的随机组合

def getRandom():

    return ''.join(random.sample(field,4))

#生成的每个激活码中有几组

def concatenate(group):

    return '-'.join([getRandom() for i in range(group)])

#生成n组激活码

def generate(n):

    return [concatenate(4) for i in range(n)]

if __name__ == '__main__':

    print generate(10)

统计单词

#!/usr/bin/env python

#encoding:utf-8

import re

from collections import Counter

FileSource = './media/abc.txt'

def getMostCommonWord(articlefilesource):

    '''输入一个英文的纯文本文件,统计其中的单词出现的个数'''

    pattern = r'[A-Za-z]+|\$?\d+%?$'

    with open(articlefilesource) as f:

        r = re.findall(pattern,f.read())

        return Counter(r).most_common()

if __name__ == '__main__':

    print getMostCommonWord(FileSource)

提取网页正文

#!/usr/bin/env python

#encoding:utf-8

from goose import Goose

from goose.text import StopWordsChinese

import sys

#要分析的网页url

url = '

def extract(url):

    '''

    提取网页正文

    '''

    g = Goose({'stopwords_class':StopWordsChinese}) 

    artlcle = g.extract(url=url)

    return artlcle.cleaned_text

if __name__ == '__main__':

    print extract(url) 

使用Python统计端口TCP连接数

import psutil

import prettytable

import time

startTime = time.time()

port = 22  # ssh -i /etc/ssh/ssh_host_rsa_key root@10.6.28.28

# define data structure for each connection, each ip is unique unit

ipaddress = {

    'ipaddress': None,

    'counts': 0,

    'stat': {

        'established': 0,

        'time_wait': 0,

        'others': 0

    }

}

# define data structure for statistics

statistics = {

    'portIsUsed': False,

    'portUsedCounts': 0,

    'portPeerList': [

        {

            'ipaddress': None,

            'counts': 0,

            'stat': {

                'established': 0,

                'time_wait': 0,

                'others': 0

            },

        },

    ]

}

tmp_portPeerList = list()

portPeerSet = set()

netstat = psutil.net_connections()

# get all ip address only for statistics data

for i, sconn in enumerate(netstat):

    if port in sconn.laddr:

        statistics['portIsUsed'] = True

        if len(sconn.raddr) != 0:

            statistics['portUsedCounts'] += 1

            ipaddress['ipaddress'] = sconn.raddr[0]

            tmp_portPeerList.append(str(ipaddress))  # dict() list() set() is unhashable type, collections.Counter

for ip in tmp_portPeerList:

    portPeerSet.add(str(ip))  # remove duplicated ip address using set()

for member in portPeerSet:

    statistics['portPeerList'].append(eval(member))

# add statistics data for each ip address

for sconn in netstat:

    if port in sconn.laddr:

        if len(sconn.raddr) != 0:

            for i, item in enumerate(statistics['portPeerList']):

                if item['ipaddress'] == sconn.raddr[0]:

                    statistics['portPeerList'][i]['counts'] += 1

                    if sconn.status == 'ESTABLISHED':

                        statistics['portPeerList'][i]['stat']['established'] += 1

                    elif sconn.status == 'TIME_WAIT':

                        statistics['portPeerList'][i]['stat']['time_wait'] += 1

                    else:

                        statistics['portPeerList'][i]['stat']['others'] += 1

# print statistics result using prettytable

if statistics['portIsUsed']:

    print "Total connections of port %s is %d." % (port, statistics['portUsedCounts'])

    table = prettytable.PrettyTable()

    table.field_names = ["Total Counts", "Remote IP Address", "Established Conns", "Time_wait Conns",

                         "Others Conns"]

    for i, ip in enumerate(statistics['portPeerList']):

        if ip['ipaddress'] is not None:

            table.add_row([ip['counts'], ip['ipaddress'], ip['stat']['established'], ip['stat']['time_wait'],

                           ip['stat']['others']])

    print table.get_string(sortby=table.field_names[1], reversesort=True)

else:

    print 'port %s has no connections, please make sure port is listen or in use.' % port

endTime = time.time()

print "Elapsed time: %s seconds." % (endTime - startTime) 

python 收集主机信息

#!/usr/bin/env  python 

"""

file name: collect_info_a.py

"""

from  subprocess  import  Popen, PIPE

def  getIfconfig():

    p = Popen(['ifconfig'], stdout=PIPE, stderr=PIPE)

    data = p.stdout.read()

    return data

def  getDmi():

    p = Popen(['dmidecode'], stdout=PIPE, stderr=PIPE)

    data = p.stdout.read()

    return data

"""

从getIfconfig() 和getDmi() 函数返回的都是一个字符串。下面再定义一个

parseData(data) 的函数,将字符串分割成一个列表,每遇到顶格的行,就是

新的一段信息.

"""

def  parseData(data):

    parsed_data = []

    new_line = ''

    data = [i for i in data.split('\n')  if i] #将字符串分割,去掉空行的元素

    for  line  in data:

        if  line[0].strip():  #当遇到顶格的行,就把new_line 保存的上一段信息,append 到parsed_line

            parsed_data.append(new_line)

            new_line = line+'\n'  #重新保存新的一段的信息

        else:

            new_line += line+'\n'

    parsed_data.append(new_line)

    return [i for i in parsed_data if i]  #去掉空行的元素

"""

parseData(data) 函数返回的就是一个处理过的列表,将收集到的ip 字符串信息和 dmidecode 字符串信息,交给

下面定义的parseIfconfig() 和parseDmi() 函数分别处理,返回ip 信息的字典,和dmidecode 信息的字典。

"""

def  parseIfconfig(parsed_data):

    parsed_data = [i for parsed_data if i and  not i.startswith('lo')]  #将"lo" 网卡的信息去掉

    dic = {}

    for lines in parsed_data:

        devname = lines.split('\n')[0].split()[0]

        macaddr = lines.split('\n')[0].split()[-1]

        ipaddr  = lines.split('\n')[1].split()[1].split(':')[1]

        break   #由于只需要第一张网卡的信息,所以这里就可以退出循环了

    dic['ip'] = ipaddr

    return dic

def  parseDmi(parsed_data):

    dic = {}

    parsed_data = [i for i in parsed_data if  i.startswith('System Information')] #把这段信息直接整出来

    parsed_data = [i for i in parsed_data[0].split('\n')[1:] if i ]

    parsed_data = [i.strip().split(':') for i in parsed_data if i]

    dmi_dic = dict(parsed_data)

    dic = {}

    dic['vender'] = dmi_dic['Manufacturer'].strip()

    dic['product'] = dmi_dic['Product Name'].strip()

    dic['sn']  = dmi_dic['Serial Number'].strip()

    return dic

"""

getHostName: 函数

fn : 文件名参数

功能: 通过fn 传入文件名,读取HOSTNAME 信息

"""

def getHostName(fn):

    with open(fn) as fd:

        for line in fd:

            if line.startswith('HOSTNAME'):

                HostName = line.split('=')[1].strip()

                break

    return {'HostName': HostName}

"""

getOSver: 函数

fn : 文件名参数

功能: 打开fn 文件,读取操作系统版本信息

"""

def  getOSver(fn):

    with open(fn) as fd:

        for line in fd:

            osver = line.strip()

            break

    return {'osver': osver}

"""

getCpu: 函数

fn : 文件名参数

功能: 读取fn 文件信息,读取cpu 核数和cpu 型号

"""

def getCpu(fn):

    num = 0

    dic = {}

    with open(fn) as fd:

         for line in fd:

             if line.startswith('processor'):

                 num += 1

             if line.startswith('model name'):

                 model_name = line.split(':')[1]

                 model_name = model_name.split()[0] + ' ' + model_name.split()[-1]

    dic['cpu_num'] = num

    dic['cpu_model'] = model_name

    return dic

"""

getMemory: 函数

fn : 文件名参数

功能: 打开fn 文件,读取系统MemTotal 数值

"""

def  getMemory(fn):

    with open(fn) as fd:

        for line in fd:

            if line.startswith('MemTotal'):

                mem = int(line.split()[1].strip())

                break

    mem = '%s' % int((mem/1024.0)) +'M'

    return {'Memory': mem}

if  __name__ == '__main__':

    data_ip = getIfconfig()

    parsed_data_ip = parseData(data_ip)

    ip = parseIfconfig(parsed_data_ip)

    data_dmi = getDmi()

    parsed_data_dmi = parseData(data_dmi)

    dmi = prseDmi(parsed_data_dmi)

    HostName = getHostName('/etc/sysconfig/network')

    osver = getOSver('/etc/issue')

    cpu = getCpu('/proc/cpuinfo')

    mem = getMemory('/proc/meminfo')

    dic = {} #定义空字典,上面收集到的主机信息都是字典形式的,就是为了现在能将它们update 在一个字典

    dic.update(ip)

    dic.update(dmi)

    dic.update(HostName)

    dic.update(osver)

    dic.update(cpu)

    dic.update(mem)

    print dic

python 收集ip信息

#!/usr/bin/env  python

from subprocess  import  Popen, PIPE

def  getData():

    p = Popen(['ifconfig'], stdout=PIPE, stderr=PIPE)

    data = p.stdout.read().split("\n\n")

    return [i for i in data if i and  not  i.startswith('lo')]

def parseData(data):

    dic = {}

    for lines  in data :

        devname =  lines.split('\n')[0].split()[0]

        ipaddr =  lines.split('\n')[1].split()[1].split(':')[1]

        macaddr =  lines.split('\n')[0].split()[-1]

        dic[devname] = [ipaddr,  macaddr]

    return dic

if  __name__ == "__main__":

    data = getData()

    print parseData(data)

方法2:

#!/usr/bin/env  python 

from   subprocess  import   Popen, PIPE

def  getIP():

    p = Popen(['ifconfig'], stdout=PIPE, stderr=PIPE)

    stdout,  stderr  =  p.communicate()

    return  [i  for  i  in stdout.split('\n') if i]

def genIP(data):

    lines = []

    new_line = ''

    for line in data:

        if  line[0].strip():

            lines.append(new_line)

            new_line = line + '\n'

        else:

            new_line += line + '\n'

    lines.append(new_line)

    lines = [i for i in lines  if i and not i.starswith('lo')]

    return lines

def parseData(data):

    dic = {}

    for lines in data:

        devname = lines.split('\n')[0].split()[0]

        macaddr = lines.split('\n')[0].split()[-1]

        ipaddr  = lines.split('\n')[1].split()[1].split(':')[1]

        dic[devname] =  [ipaddr,  macaddr] 

    return dic   

if  __name__ == "__main__":

    data =  getIP()    

    data_list = genIP(data)

    print parseData(data_list)

python脚本: 双向统计文件字符、单词数、行数

#!/usr/bin/python

import sys

import os

if len(sys.argv) == 1:

        data = sys.stdin.read()

else:

        try:

                fn = sys.argv[1]

        except IndexError:

                print "please follow a argument at %s" %__file__

                sys.exit()

        if not os.path.exists(fn):

                print "%s is not exits." %fn

                sys.exit()

        fd = open(sys.argv[1])

        data = fd.read()

chars = len(data)

words = len(data.split())

lines = data.count('\n')

print "%(lines)s %(words)s %(chars)s" %locals()

python 代码统计文件的行数

#!/usr/bin/python

#encofing:utf8

# 统计文件的行数

import sys

def lineCount(fd):

        n = 0

        for i in fd:

                n += 1

        return n

fd = sys.stdin

print lineCount(fd)

python 递归法列出目录中的所有文件

用到的方法:

import os

os.listdir('/etc/'):列出指定目录下的所有文件和目录

os.path.isdir('/etc/'):判断是否是一个目录,返回一个布尔值

os.path.isfile('/etc/passwd'):判断是否是一个文件,返回一个布尔值

os.path.join('/etc','passwd'):连接两个路径

例:

#!/usr/bin/python

import sys

import os

def print_files(path):

    lsdir=os.listdir(path)

    dirs=[i for i in lsdir if os.path.isdir(os.path.join(path, i))]

    files=[i for i in lsdir if os.path.isfile(os.path.join(path, i))]

    if files:

        for f in files:

            print os.path.join(path, f)

    if dirs:

        for d in dirs:

            print_files(os.path.join(path, d))

print_files(sys.argv[1])

python 统计单词个数---不去重

import re

pattern  = re.compile(r'\w+')

pattern.match('hello ,world')

words = pattern.findall('hello hello  world')

len(words)

python 统计列表相同值重复次数

第一种:

    >>> test_list = ['a',0,'a',1,'a',0,1]

    >>> test_set = set(test_list)

    >>> for i in test_set:

    ...     print('values %s times %d' % (i,test_list.count(i)))

    ... 

    values a times 3

    values 0 times 2

    values 1 times 2

第二种:

    >>> from collections import Counter

    >>> test_list = ['a',0,'a',1,'a',0,1]

    >>> num = Counter(test_list)

    >>> num

    Counter({'a': 3, 0: 2, 1: 2})

    >>> num[0]

    2

    >>> num[1]

    2

    >>> num['a']

    3

第三种:

    >>> test_list = ['a',0,'a',1,'a',0,1,6]

    >>> test_dict = {}

    >>> for i in test_list:

    ...     if test_list.count(i) >= 1:

    ...             test_dict[i] = test_list.count(i)

    ... 

    >>> print(test_dict)

    {0: 2, 'a': 3, 6: 1, 1: 2}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot整合ORM开发框架MyBatis和JPA
1、在使用Spring整合ORM组件的过程中,为了达到简化的目的,往往会进行大量的配置。利用SpringBoot可以进一步实现配置的简化。SpringBoot整合MyBatis开发框架,MyBatis是一款常用并且配置极为简单的ORM开发框架。其与Spring结合后,可以利用Spring的特征实现DAO接口的自动配置。在SpringBoot中,又对MyBatis框架的整合进行了进一步简化。
别先生
2020/11/26
8290
SpringBoot整合ORM开发框架MyBatis和JPA
Spring Boot 通过注解的方式整合 MyBatis
目前而言,国内大家使用最多的持久层框架可能还是 MyBatis 吧,那既然如此,更强大的 Spring Boot 遇上炽手可热的 MyBatis,又会擦出什么样的火花呢?
村雨遥
2022/06/15
3100
Spring Boot 通过注解的方式整合 MyBatis
SpringBoot使用Mybatis 快速入门
比JDBC要简单点, 对JDBC的一个封装。官网:https://commons.apache.org/proper/commons-dbutils/
憧憬博客
2020/07/21
4450
【Java】SpringBoot整合多数据源JdbcTemplate、Mybatis、Jpa
SpringBoot 整合 JdbcTemplate 多数据源 pom <!-- 引入阿里的数据源--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> application.properties #快捷键alt拉
瑞新
2021/12/06
7760
一起学习Spring boot 2.1.X | 第五篇:Mybatis Druid 数据库(注解版)「建议收藏」
Spring boot :2.1.5RELEASE ;数据库(Mysql、Oracle);Mybatis;阿里云的连接池 : Druid ;
全栈程序员站长
2022/09/15
1720
SpringBoot集成Mybatis
目标:集成Mybatis 工具:IDEA--2020.1 学习目标:框架工具集成 本次学习的工程下载链接放到文本最后面
背雷管的小青年
2020/06/08
9630
SpringBoot集成Mybatis
Spring+SpringMVC+MyBatis整合
1、基本概念 1.1、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以
xiangzhihong
2018/02/05
1.4K0
Spring+SpringMVC+MyBatis整合
快速搭建springboot的ssm(spring + springmvc + mybatis)的maven项目
效果图 controller package com.example.demo.controller; import com.example.demo.dao.UserMapper; imp
瑞新
2020/07/08
6810
快速搭建springboot的ssm(spring + springmvc + mybatis)的maven项目
03. Springboot集成Mybatis-flex(一)
现在主流的Mybatis增强框架有很多,当然项目中最经常使用的还是MybatisPlus为主。但是用过MybatisPlus的小伙伴也知道,对于单表操作,链式的编码方式以及提供的Lambda支持可以简化很多代码量,但是如果多表操作,就显得心有余而力不足了。因此大多数项目中对于多表操作,仍然选择采用XML的编写方式。那么这里介绍一款Mybatis增强框架,号称集成了MybatisPlus等多个框架的优点。那就是Mybatis-Flex。
有一只柴犬
2024/01/25
1.1K0
03. Springboot集成Mybatis-flex(一)
Spring Boot入门系列(十八)mybatis 使用注解实现增删改查,无需xml文件!
之前介绍了Spring Boot 整合mybatis 使用xml配置的方式实现增删改查,还介绍了自定义mapper 实现复杂多表关联查询。虽然目前 mybatis 使用xml 配置的方式 已经极大减轻了配置的复杂度,支持 generator 插件 根据表结构自动生成实体类、配置文件和dao层代码,减轻很大一部分开发量;但是 java 注解的运用发展到今天。约定取代配置的规范已经深入人心。开发者还是倾向于使用注解解决一切问题,注解版最大的特点是具体的 SQL 文件需要写在 Mapper 类中,取消了 Mapper 的 XML 配置 。这样不用任何配置文件,就可以简单配置轻松上手。所以今天就介绍Spring Boot 整合mybatis 使用注解的方式实现数据库操作 。
架构师精进
2020/08/25
3K0
Spring Boot入门系列(十八)mybatis 使用注解实现增删改查,无需xml文件!
SpringBoot 通过注解的方式整合 Mybatis + PageHelper 分页显示
本篇博客主要利用 SpringBoot 通过注解的方式整合 Mybatis 同时利用 PageHelper 对结果分页,所有涉及的代码已经上传 Github mybatis-pagehelper[1]。下面是整个整合过程,接下来开始整合:
村雨遥
2020/08/13
1.4K0
idea创建Springboot+mybatis+mysql
项目开始生成,界面右下角回弹出一个小方框,点击Enable Autop-Import ,idea 会自动下载jar包,时间比较长 (5分钟左右)
故久
2019/09/29
2.5K2
idea创建Springboot+mybatis+mysql
使用idea实现springboot Mybatis 整合(springboot 2.x)
本来这篇博文老在就写好了,但是后来发现很多功能其实根本就没有检验通过就发出来了,导致遗留了很多坑,比如最难搞的就是SqlSessionFactory和PageHelper,之前写过关于springboot1.5.6版本的整合,这段时间刚好springboot发布了2.0的正式版本,很多同学可能没有注意版本,导致了整合的时候出现了很多很多的问题,这几天刚好有空就试着整合一下springboot2.0 mybatis,发现了很多很多的坑,而且网上的资源也不多,终于在两天的踩坑中成功整合了,并且将翻页功能修复好了,废话不多说了,看代码:
凯哥Java
2019/06/30
1.4K0
SpringBoot之Mybatis
前言:群里面经常有人问有木有mybatis的案例,正好有空整合一下。我之前没有用过mybatis,但是跑过简单的增删改查,发现真的很轻量,写sql还比较不错,多表查询也比较方便,但是insert 和update有点麻烦(字段一多写sql会死人)。用了之后我还是希望用jpa,毕竟增删改查都不用自己写,关键可以直接传对象。
王念博客
2019/07/25
5170
spring boot 系列之七:SpringBoot整合Mybatis
springboot已经很流行,但是它仍需要搭配一款ORM框架来实现数据的CRUD,之前已经分享过JdbcTemplete和JPA的整合,本次分享下Mybatis的整合。 对于mybatis的使用,需要创建mapper类和mapper.xml文件,这种创建比较烦,并且基本都是模板样式的,可以通过之前分享的《IDEA中mybatis generator使用》来自动创建完整的文件。由于本次deom中只有一个查询方法,就直接手写了,不再使用该插件了。 代码整体结构:
全栈程序员站长
2022/07/18
1.2K0
spring boot 系列之七:SpringBoot整合Mybatis
9.Spring-Boot之Mybatis-LogBack-Freemarker
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说9.Spring-Boot之Mybatis-LogBack-Freemarker,希望能够帮助大家进步!!!
Java架构师必看
2021/12/03
3260
9.Spring-Boot之Mybatis-LogBack-Freemarker
详细介绍SpringBoot整合SpringSecurity
  本文我们来详细给小伙伴们介绍下SpringBoot整合SpringSecurity的过程,用到的技术为:SpringBoot2.2.1+SpringSecurity+SpringDataJPA+jsp来整合。
用户4919348
2019/12/11
1.1K0
详细介绍SpringBoot整合SpringSecurity
Springboot前后端分离开发
.1.springboot前后端分离开发之前要配置好很多东西,这周会详细补充博客内容和遇到的问题的解析
阮键
2019/08/07
1.1K0
高级框架-SpringBoot【悟空教程】
Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的轻量级代替品。无需开发重量级的 Enterprise JavaBean(EJB),Spring 为企业级 Java 开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的 Java 对象(Plain Old Java Object,POJO)实现了 EJB 的功能。
Java帮帮
2018/08/16
2.5K0
高级框架-SpringBoot【悟空教程】
SSM框架整合:SpringMVC + Spring + MyBatis+Maven
创建一个登陆页面,输入username和password,如果和数据库对应,则跳转的success.jsp,否则跳转到error.jsp
CBeann
2023/12/25
2330
SSM框架整合:SpringMVC + Spring + MyBatis+Maven
推荐阅读
相关推荐
SpringBoot整合ORM开发框架MyBatis和JPA
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文